簡體   English   中英

在紅寶石中不按位

[英]Bitwise NOT in ruby

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

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

如何在ruby中編寫相同的表達式? ruby中沒有按位NOT運算符。

這不會有幫助嗎? http://www.techotopia.com/index.php/Ruby_Operators#Ruby_Bitwise_Operators

〜按位NOT(補語)

我相信Ruby中的相同表達式是(n/m + 0.5).to_i * m ,或者, Integer(n/m + 0.5) * m

看起來像加倍的按位補碼實際上用於截斷計算的小數部分,以便計算最接近的n ,使得nm的倍數。 (在另一種語言中,我會說“轉換為整數” ,但Javascript具有統一的算術類型。)

更新: MladenJablanović建議演員,是的,如果mn都是Fixnum,那就需要了。 在Ruby中, 1/30但在JS中它是0.333 ......這是一個精致的建議:

(n.to_f / m).round * m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM