Почему Google Spreadsheets говорит, что Zero не равен нулю?
Проведя часы, пытаясь выяснить ошибку в моей личной таблице учета, я мог бы привязать ее к одной формуле.
Пока это приводит к нулю
=((0,6-0,3-0,4)+(-0,3+0,8-0,4))
сравнение его с Zero дает мне false
=((0,6-0,3-0,4)+(-0,3+0,8-0,4))=0
Чего мне не хватает?
1 ответ
6
Благодаря чудесам арифметики с плавающей запятой ,
((0.6-0.3-0.4)+(-0.3+0.8-0.4))
оценивается приблизительно до -5,55e-17 с двойной точностью. Это выполняется как в JavaScript, так и в таблицах Google. На самом деле не имеет значения, является ли вычисление клиентской или серверной: важно использовать формат чисел. Похоже, Google Таблицы используют двойные точность .
Решение одно и то же: избегайте сравнения равенства чисел с плавающей запятой. В вашем случае изменение единиц путем умножения всего на 10 позволит избежать проблемы.