我在JS中有一个使用按位NOT运算符的公式。
~~(n/m + 0.5) * m;我怎么用ruby写同样的表达式呢?ruby中没有按位NOT运算符。
发布于 2011-04-06 02:19:50
我相信在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,但在JS中是0.333……这里有一个精炼的建议:
(n.to_f / m).round * m发布于 2011-04-06 01:54:29
这不会有帮助吗?http://www.techotopia.com/index.php/Ruby_Operators#Ruby_Bitwise_Operators
~按位NOT (补码)
https://stackoverflow.com/questions/5556195
复制相似问题