Что нового

Неточный результат вычитания дробных чисел

atacit

Новичок
Сообщения
4
Репутация
0
Не пойму, почему AutoIt "съедает" разряд при вычиcлении разности дробных чисел, например:
Код:
ConsoleWrite(1.7-1.6)

0.0999999999999999
Код:
ConsoleWrite(1.1-1.17)

-0.0699999999999998

P.S. AutoIt версия 3.3.8.1
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.



Сравнение вещественных чисел
Код:
ConsoleWrite(1.7 - 1.6 & @LF)
ConsoleWrite(_Precise(1.7 - 1.6) & @LF)

Func _Precise($i_Value)
	Return Round($i_Value, 15)
EndFunc   ;==>_Precise
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
atacit
это обычная потеря точности для чисел с конечной разрядностью в машинных вычислениях. можно округлять через Round до нескольких разрядов. 5-6 думаю достаточно.
 
Автор
A

atacit

Новичок
Сообщения
4
Репутация
0
Спасибо за ответы, раньше не сталкивался с такой "фишкой".
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
atacit
Вот ещё почитай http://autoit-script.ru/index.php/topic,11196.msg74397.html#msg74397
 
Верх