Я не знаю, относится ли это к JavaScript.
var pi = 3.14159265 alert(pi|0)
Это выдаст 3.
Может кто-нибудь объяснить, что происходит с десятичной дробью во время побитовой операции ИЛИ?
Побитовый оператор или оператор работает только с целочисленными типами, поэтому дробный компонент молча удаляется из числа. Побитовый или с нулем всегда приведет к другому операнду. Таким образом, вы получаете 3.
Битовый оператор работает только с целыми числами.
pi (3.14 ..) преобразуется в INT, который усекает десятичные разряды до 3.