Сравнение с плавающей запятой - результат между различными запусками - PullRequest
1 голос
/ 24 сентября 2010

Я знаю, что не могу сравнить два числа с плавающей запятой или двойные числа для абсолютного равенства на C ++ / C.Если по какой-то причине я пишу условие if, которое использует абсолютное равенство, гарантируется ли, что условие if будет возвращать один и тот же результат при разных запусках программы для одних и тех же данных?Или это чисто недетерминированный и результат может варьироваться?

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Для одного и того же скомпилированного двоичного файла и на одном ПК результаты должны быть одинаковыми. Если вы используете другой компилятор или другой компьютер, результаты могут отличаться.

0 голосов
/ 25 сентября 2010

У меня когда-то был модульный тест, который не удался на машине с процессором Intel, но нормально работал на AMD. Вероятно, была некоторая разница в округлении, и тест более или менее попадал в критерий прохождения / неудачи.

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

...