Я ожидал, что значение параметра i будет равно 0
Арифметически правильный вывод: 100 * 1 / 100 = (100 * 1) / 100 = 100 / 100 = 1 / 1 = 1
, например, регистр для параметра k.
Значение j
равно 0
, поэтому все, умноженное на него, будет равно нулю, как в случае k
.
есть ли правило всегда повышать / приводить к Double внутри выражений, включающих деление, но не умножение?
Если вы разделите целые числа, вы получите целое число обратно. Если одно из чисел двойное, результатом будет двойное:
val x = 100 * 1.0/100 //Double because 1.0 is a Double
-
На форуме kotlin уже есть обсуждение вашей проблемы здесь :
Математически говоря, текущее поведение является правильным. Это называется целочисленным делением и приводит к частному как ответ