首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按位不使用ruby

问按位不使用ruby
EN

Stack Overflow用户
提问于 2011-04-06 01:52:00
回答 2查看 2.1K关注 0票数 2

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

代码语言:javascript
复制
~~(n/m + 0.5) * m;

我怎么用ruby写同样的表达式呢?ruby中没有按位NOT运算符。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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……这里有一个精炼的建议:

代码语言:javascript
复制
(n.to_f / m).round * m
票数 6
EN

Stack Overflow用户

发布于 2011-04-06 01:54:29

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5556195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档