Я слышал, что вы можете смещать номер на 5. вместо использования Math.floor(). Я решил проверить его пределы, чтобы убедиться, что это подходящая замена, поэтому я проверил следующие значения и получил следующие результаты в Google Chrome:
2.5 >> .5 == 2;
2.9999 >> .5 == 2;
2.999999999999999 >> .5 == 2; // 15 9s
2.9999999999999999 >> .5 == 3; // 16 9s
После некоторых попыток я узнал, что наивысшее возможное значение двух, которое при сдвиге справа на 0,5 даст 2, равно 2.9999999999999997779553950749686919152736663818359374999999 ¯ (с 9 повторами) в Chrome и Firefox. Число равно 2.9999999999999997779 ¯ в IE.
Мой вопрос: каково значение числа .0000000000000007779553950749686919152736663818359374? Это очень странное число, и это действительно вызвало мое любопытство.
Я пытался найти ответ или хотя бы какой-то образец, но я думаю, что моя проблема заключается в том, что я действительно не понимаю побитную операцию. Я понимаю идею в принципе, но переключение бит-последовательности на .5 не имеет для меня никакого смысла. Любая помощь приветствуется.
Для записи последовательность странных цифр изменяется с помощью 2 ^ x. Максимально возможные значения следующих чисел, которые по-прежнему усекаются должным образом:
for 0: 0.9999999999999999444888487687421729788184165954589843749¯ for 1: 1.9999999999999999888977697537484345957636833190917968749¯ for 2-3: x+.99999999999999977795539507496869191527366638183593749¯ for 4-7: x+.9999999999999995559107901499373838305473327636718749¯ for 8-15: x+.999999999999999111821580299874767661094665527343749¯ ...and so forth