Побитовый НЕ в рубине - PullRequest
       26

Побитовый НЕ в рубине

2 голосов
/ 05 апреля 2011

У меня есть формула в JS, которая использует побитовый оператор NOT.

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

Как мне написать то же выражение в ruby?В ruby ​​отсутствует побитовый оператор NOT.

Ответы [ 2 ]

6 голосов
/ 05 апреля 2011

Я полагаю, что то же выражение в Ruby будет (n/m + 0.5).to_i * m, или, альтернативно, Integer(n/m + 0.5) * m.

Похоже, что удвоенное побитовое дополнение действительно используется для усечения десятичной части вычисления., чтобы вычислить ближайшее n так, чтобы n было кратно m .(На другом языке я бы сказал «преобразовать в целое число» , но Javascript имеет единый арифметический тип.)

Обновление: Младен Ябланович предлагает приведение, и да, если оба m и n являются Fixnum, это необходимо.В Ruby 1/3 это 0 , но в JS это 0.333 ... Вот изящное предложение:

(n.to_f / m).round * m
6 голосов
/ 05 апреля 2011

это не поможет?http://www.techotopia.com/index.php/Ruby_Operators#Ruby_Bitwise_Operators

~ Побитовое НЕ (дополнение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...