В ruby все арифметические операции приводят к значению того же типа, что и операнды (с большей точностью).
При этом 3/4
- это целочисленное деление, в результате чего 0
.
Чтобы ваш пример работал, вы должны убедиться, что никуда не теряете точность:
i = 1.0
n = 151.0
sum = (i - 3.0/8) / (n + 1/4.0)
Обратите внимание, что, как и на большинстве (если не на всех) языках, Float
испорчен:
0.1 + 0.2 #⇒ 0.30000000000000004
Если вам нужно точное значение, вы можете использовать BigDecimal
или Rational
.