Почему 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

Чего мне не хватает?

7 голосов | спросил bruno 11 J000000Saturday15 2015, 02:11:37

1 ответ


6

Благодаря чудесам арифметики с плавающей запятой ,

((0.6-0.3-0.4)+(-0.3+0.8-0.4))

оценивается приблизительно до -5,55e-17 с двойной точностью. Это выполняется как в JavaScript, так и в таблицах Google. На самом деле не имеет значения, является ли вычисление клиентской или серверной: важно использовать формат чисел. Похоже, Google Таблицы используют двойные точность .

Решение одно и то же: избегайте сравнения равенства чисел с плавающей запятой. В вашем случае изменение единиц путем умножения всего на 10 позволит избежать проблемы.

ответил 11 J000000Saturday15 2015, 04:01:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132