Пикабушники, выжпрограммисты, объясните, пожалуйста, как в Си сравнивать переменные типа float?

Сравнение на на "равно", а на "больше/меньше". Как я понимаю, просто операторами "" числа с плавающей точкой сравнивать нельзя. Объясните как можно? Ну, или хотя бы ссылочку, где об этом прочитать можно
Автор поста оценил этот комментарий
В любом ЯП будет всплывать проблема сравнения, к примеру, 0.37 и 0.3700000000000001 из-за представления float. Поэтому напрямую сравнивать лучше только int типы, а с float учитывать погрешность или вводить округление.
раскрыть ветку (1)
Автор поста оценил этот комментарий
или как учесть погрешность? ну, я понимаю, что if (fabs(a-b)<0.00001), то числа можно считать равными до пятого знака после запятой, а как потом сравнить на больше/меньше два этих числа?
Автор поста оценил этот комментарий
В любом ЯП будет всплывать проблема сравнения, к примеру, 0.37 и 0.3700000000000001 из-за представления float. Поэтому напрямую сравнивать лучше только int типы, а с float учитывать погрешность или вводить округление.
раскрыть ветку (1)
Автор поста оценил этот комментарий
А как ввести окргление?
1
Автор поста оценил этот комментарий
...то чувство когда вообще не понимаешь о чём речь, вообще ни единого слова, даж грустно как то стало
Предпросмотр
раскрыть ветку (1)
Автор поста оценил этот комментарий
приуныл)
Автор поста оценил этот комментарий
В связи с этим, категорически не рекомендуется сравнивать между собой два вещественных числа на равенство, так как такое сравнение не является корректным.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Ну, т.е. на "больше/меньше" сравнивать можно?
показать ответы
2
Автор поста оценил этот комментарий
Почему нельзя?
раскрыть ветку (1)
Автор поста оценил этот комментарий
вот что-то типа этого. или я ошибаюсь? Необходимо помнить, что вещественные числа хранятся в памяти компьютера с некоторой ограниченной точностью в двоичной системе счисления, в то время как общепринятой в использовании является десятичная система счисления. Поэтому многие числа, которые точно записываются в десятичной системе, в двоичной системе можно записать только в виде бесконечной дроби.

Например, числа 0.3 и 0.7 представлены в компьютере бесконечными дробями, в то время как число 0.25 хранится точно, так как представляет из себя степень двойки.

В связи с этим, категорически не рекомендуется сравнивать между собой два вещественных числа на равенство, так как такое сравнение не является корректным.
показать ответы