在红宝石中不按位

时间:2011-04-05 17:52:00

标签: javascript ruby math operators

我在JS中有一个使用按位NOT运算符的公式。

~~(n/m + 0.5) * m;

如何在ruby中编写相同的表达式? ruby中没有按位NOT运算符。

2 个答案:

答案 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