Это должно быть точно равно 50, что подтверждается моим калькулятором (скопировано и вставлено одно и то же уравнение в gcalc). Почему Ruby отказывается это делать?
Ответ 1
Он выполняет целочисленное деление.
В принципе, 25 - целое число (целое число), и поэтому 50, поэтому, когда вы делите одно на другое, оно дает другое целое число.
25 / 50 * 100 = 0.5 * 100 = 0 * 100 = 0
Лучший способ сделать это - сначала умножить, затем разделить.
25 * 100 / 50 = 2500 / 50 = 50
Вы также можете использовать арифметику с плавающей запятой явно, указав десятичную точку, как в:
25.0 / 50.0 * 100 = 0.5 * 100 = 50
Ответ 2
Потому что вы делите целое на целое число, поэтому результат получается усеченным до целого (0.5 → 0), прежде чем умножить на 100.