целочисленное деление в Ruby с отрицательным значением
Пытаясь сделать отрицательное деление значений в Ruby, например -123 / 10, почему он возвращает -13 вместо -12 ?
ruby -v
ruby 1.9.3p375 (2013-01-18) [x86_64-darwin12.2.1]
irb(main):001:0> -123/10
=> -13
irb(main):002:0> -123%10
=> 7
-123/10 возвращает -12 и -123%10 возвращает -3 В C / C++, как и ожидалось.
1 ответ:
Вот как он устроен. Рубин округляет числа до отрицательной бесконечности в случае отрицательного деления и операции по модулю. Это не уникально для Ruby, Python и Perl также ведут себя подобным образом.
Тем не менее, этот подход дает хорошее математическое обоснование.
a / b = qс остаткомrТакие, что
Из того, что я читал, следует, что именно так преподают арифметику в Японии.b * q + r = a and 0 <= r < bРедактировать:
Савва указал, что именно так в Японии преподают положительную арифметику, а не отрицательные числа. Однако, как он сказал, Это можно распространить и на отрицательные числа.
Источники:
Comments