Учитывая следующее:
.1 + .2 === .3 // false
1 * .3 === .3 // true
... первое не приводит к 0.3
потому что один или несколько операндов не могут быть точно представлены в плавающей точке с двойной точностью IEEE 754, поэтому результат почти не равен 0.3
.
Почему последние true
. Это потому, что 0.3
является точно представимым в плавающей точке с двойной точностью IEEE 754?
0,3 не является точно представимым, но 1,0. Умножение любого числа на 1, в соответствии с правилами IEEE, должно возвращать исходное значение, которое равно самому себе.