Почему два одинаковых числа не равны в c++ И как это исправить? - Вопросы по С+

Вопрос Почему два одинаковых числа не равны в c++ И как это исправить?

Регистрация
31 Окт 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
42.9208 - это не всё число, а только его первые 6 цифр (реальная дробная часть длиннее), да ещё и после преобразования в десятичную систему (тогда как хранятся все вещественные числа в двоичной системе).
Вещественные числа в компьютере всегда хранятся приближённо, потому сравнивать их на равенство бессмысленно: в подавляющем большинстве случаев они не совпадут.

Вещественные числа q и r можно считать равными, если abs(q - r) < eps. Где eps - допустимая погрешность сравнения. Можно придумать и другие похожие формулы.
Главное: не использовать q == r.

Подробнее можно прочитать в ВУЗовском учебнике вычислительной математики.
 
Регистрация
4 Окт 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
числа с плавающей запятой сравниваются с определенной заданной точностью.
к примеру if (fabs(a-b) < eps)
 
Регистрация
16 Мар 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Вероятность того, что два вещественных числа равны КРАЙНЕ МАЛА. У них может быть какая-то погрешность, тем более при пересчёте в десятичное число.
 
Регистрация
9 Ноя 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Насколько я знаю вещественные числа в любом языке программирования не могут быть равны, не помню почему. Попробуй умножить float (double) на 10000 и преобразуй их в int, а потом сравни. Думаю есть и более рациональные варианты.
 
Сверху Снизу