2015-04-08 8 views
0

У меня есть две двойные переменные. double a = 0,10000, double b = 0,1. Как я могу убедиться, что сравнение (a == b) всегда верно?Убедитесь, что сравнение C++ с десятичной точностью верное

+2

Избегайте проверки равенства двух чисел с плавающей запятой. – pkacprzak

+0

Проверить разницу в допуске; допуск должен быть установлен в зависимости от вашего конкретного домена. – Max

ответ

7

Если вы являетесь параноиком по поводу использования == по адресу doubles или floats (каким вы должны быть), вы всегда можете проверить, что они близки в пределах небольшого допуска.

bool same = fabs(a-b) < 0.000001; 
+0

Спасибо большое! Именно то, что я ищу – cheftao

+0

В общем, постоянный допуск - это плохая идея, потому что количество смежных поплавков зависит от изменений в зависимости от самих номеров. https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ – Bill

Смежные вопросы