Как преобразовать эту функцию php в kotlin?
function round_up($number, $precision = 2)
{
$fig = pow(10, $precision);
return (ceil($number * $fig) / $fig);
}
Я пытаюсь сделать это, но не работает
fun round_up(number: Float, precision = 2){
val fig = pow(10,precision)
return (ceil(number * fig) / fig)
}
Ожидаемое использование:
val currentFloatValue = 1.568
val finalValue = round_up(currentFloatValue)
// result should be
// 1.57






Это было почти правильно:
Double, а не Float, потому что это число с плавающей запятой по умолчанию в Kotlin.precision, например. Интерн.fun round_up(number: Double, precision: Int = 2): Double {
val fig = pow(10.0, precision.toDouble())
return ceil(number * fig) / fig
}
Вы не можете точно представить десятичное число 1,57 в двоичном виде. Сам ваш подход ошибочен, поэтому вам нужен десятичный тип, если вы хотите округлить до десятичных знаков. Или, что еще лучше, вы не округляете, пока не преобразуете число в текст, где вы делаете это неявно через спецификацию формата. Кстати: «не работает» — бесполезное описание проблемы, см. Как спросить.