Это вернет вам целое число, как и ожидалось, но работает только тогда, когда b > 0
.
int a = 224;
int b = 225;
int c = (int) Math.pow(10, Math.floor(Math.log10(b))+1)*a + b; // 224225
Просто краткое объяснение: это определяет количество цифр в b
, затем вычисляет коэффициент умножения для a
так, чтобы он переместился в основание 10 еще на одну цифру, чем b
.
В этом примере b
имеет 3 цифры, floor(log10(b))
возвращает 2 (сделайте это интуитивно как 10^2=100
, 10^3 = 1000
, мы где-то посередине в 225). Затем мы вычисляем коэффициент умножения 10^(2+1)
, это 1000
. Когда мы умножаем a
на 1000, мы получаем 224000
. Добавление 224000
к 225
дает желаемый 224225
.
Ошибка на b == 0
, потому что log10(0)
не определено.