[Oo-discuss] Ошибка в вычислениях.

awk openoffice на ncn.ru
Чт Июл 9 22:40:31 MSD 2009


Отвечу всем отреагировавшим в одном письме:

Андрей Черепанов пишет:
>>
>> ЭТО ОЧЕНЬ КРИТИЧНАЯ ОШИБКА!
>> т.к. сравнения чисел, полученных от таких вычислений и работа с ними,
>> приводит к совершенно непредсказуемым результатам.
>>
>> Версия 3.0.0 (Build 9358) от Инфра-ресурс.
> Да, проблема имеет место быть. Поместил баг в багзиллу (немного поправил 
> цифры): http://www.openoffice.org/issues/show_bug.cgi?id=103445
> 
Да. Они там уже закрыли по причине дубликата.

В Экселе 2003 действительно есть такое же. Но в более раннем - этого не 
было. Потому как прошлую ошибку я обнаружил именно _только_ в Опенофисе.

Я провел эксперимент с числами. заметил следующую закономерность - 
погрешность набегает только у чисел, которые расположены друг от друга 
на определенном расстояния на числовом ряду.
Пример:
5000,7 и 5100,4 - погрешность есть.
5000,7 и 5200,4 - погрешности нет.

500000,7 и 510000,4 - погрешность есть.
500000,7 и 520000,4 - погрешности нет.

50000000,7 и 51000000,4 - погрешность есть.
50000000,7 и 52000000,4 - погрешности нет.

т.е. погрешность начинает наблюдаться при сближении чисел на числовой 
оси ближе чем 10% (в знаках). Если числа сближать, то погрешность 
проявляется.

Далее:
Утверждать, что это забота человека, заполняющего таблицу, я бы не стал. 
Т.к. никто, я уверен, не задумывается об этом и не знает про эту 
"особенность".

Я обходил это в старой версии опенофиса, когда меня прижало, но 
согласитесь, что использовать функцию округления в каждой ячейке, где 
нужно проводить сравнение - не очень рационально и эстетично.

Я знаю про операции с плавающей точкой. Но насколько я знаю из теории 
программирования - есть правило = результат должен быть расчитан с 
точностью не более, чем максимальная точность оперируемых чисел.

---
awk


Подробная информация о списке рассылки Oo-discuss