Я полагаю, что то же выражение в Ruby будет (n/m + 0.5).to_i * m
, или, альтернативно, Integer(n/m + 0.5) * m
.
Похоже, что удвоенное побитовое дополнение действительно используется для усечения десятичной части вычисления., чтобы вычислить ближайшее n так, чтобы n было кратно m .(На другом языке я бы сказал «преобразовать в целое число» , но Javascript имеет единый арифметический тип.)
Обновление: Младен Ябланович предлагает приведение, и да, если оба m и n являются Fixnum, это необходимо.В Ruby 1/3 это 0 , но в JS это 0.333 ... Вот изящное предложение:
(n.to_f / m).round * m