Как только произвели арифметическую операцию не с целым числом, забудьте о точности. То, что разница не видна в десятичном значении не значит, что её нет в двоичном. Читали статью по ссылке? Все дроби в двоичном формате бесконечные. Плюс алгоритмы округления для уменьшения накопления ошибки.
Считать нужно целые, не превышающие безопасного значения.
pixik: '&' нужен для перевода записи в pipe в фоновый режим, чтобы можно было чтение в том же терминале запустить. Без него чтение нужно запускать в другом терминале.
И почему неприменимо?
Что же там необычного?
"8a. Пусть n целое число, для которого значение n ÷ 10^f – х близко к нулю насколько возможно. Если таких n два, выбрать большее"
1.55 округлить до десятых:
n ÷ 10 − 1.55→0, должно быть -0.05 для n = 15 и 0.05 для n = 16, и выбрано 16, фактически -0.050000000000000044 и 0.050000000000000044 Выбирается правильное 16 и ставится точка в 1 знаке справа, получается 1.6
А для 2.55 получается -0.04999999999999982 для 25 и 0.050000000000000266 для 26, первое ближе к нулю, поэтому в итоге 2.5
Денис Денис: если интересен механизм работы javascript, то можно почитать dmitrysoshnikov.com/tag/ecmascript
А вообще, на мой взгляд, от практики это довольно далеко, в хорошем коде не должно таких ситуаций быть.