我在JS中有一个使用按位NOT运算符的公式。
~~(n/m + 0.5) * m;
如何在ruby中编写相同的表达式? ruby中没有按位NOT运算符。
答案 0 :(得分:6)
这不会有帮助吗? http://www.techotopia.com/index.php/Ruby_Operators#Ruby_Bitwise_Operators
~Bitwise NOT(补语)
答案 1 :(得分:6)
我相信Ruby中的相同表达式为(n/m + 0.5).to_i * m
,或者Integer(n/m + 0.5) * m
。
为了计算最接近的 n ,使得 n 是 m 的倍数。 (在另一种语言中,我会说“转换为整数”,但Javascript具有统一的算术类型。)
更新: Mladen Jablanović建议投射,是的,如果 m 和 n 都是Fixnum,则需要它。在Ruby 1/3 是 0 但在JS中它 0.333 ... 这是一个精致的建议:
(n.to_f / m).round * m