Почему простой расчет возвращает другой результат в ruby - PullRequest
0 голосов
/ 28 июня 2019

Я не специалист по математике, но следующая операция дает в ruby ​​результат, отличный от любого другого языка или калькулятора, которые я пробовал:

Ruby:

(289 / 30 * 30) - (149 / 30 * 30)
=> 150

Остальной мир:

(289 / 30 * 30) - (149 / 30 * 30)

140

Объяснение приветствуется

Ответы [ 2 ]

3 голосов
/ 28 июня 2019

Это из-за типа данных , который ruby ​​использует для деления , int пропускает дробную часть результата.

в рубине:

289 / 30
=> 9
9 * 30
=> 270
289.0 / 30
=> 9.633333333333333

В Python (например):

>>> 289 / 30
9.633333333333333
>>> 9.63333 * 30
288.9999
2 голосов
/ 28 июня 2019

Это целочисленная математика для вас.289/30 равно 9. Кстати, то же самое в Python, если вы используете // для целочисленного деления.

(289//30*30) - (149//30*30) = 150
...