Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
SphiNkSs
5 / 5 / 1
Регистрация: 28.03.2010
Сообщений: 143
#1

Проверить два числа на равенство - C++

14.04.2010, 07:47. Просмотров 1369. Ответов 7
Метки нет (Все метки)

Господа, программеры! Необходимо проверить число с плавающей точкой и целое число на равенство. Проблема заключается в том, что число с плавающей точкой представляются машине в виде ряда и таким образом, имеют не точное значение, а максимально приближенное. Например "1" в итоге равна не "1", а "0.9999999..."... Вот необходимо провести сравнение:
C++
1
2
3
double n;
int m;
if (n==m) {}
Может есть какие нить функции которые позволяют это делать без проблем? Неохото изобретать велосипед)...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2010, 07:47     Проверить два числа на равенство
Посмотрите здесь:
C++ Проверить на равенство два числа типа double
C++ даны два треугольника по заданному признаку проверить их равенство
C++ Даны два числа X и Y проверить истинность того что оба числа четные
C++ Даны два целых числа: A, B. Проверить истинность высказывания: «Числа A и B имеют одинаковую четность»
C++ Даны два числа X и Y проверить истинность
C++ Проверить пароль, а затем ввести два целых числа
C++ Ввести два произвольные числа их сумму и проверить правильно ли введена сумма
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RAIDER_55
24 / 24 / 5
Регистрация: 04.04.2010
Сообщений: 229
14.04.2010, 09:29     Проверить два числа на равенство #2
Попробуй задать точность сравнения. И если разность между сравниваемыми числами меньше чем точность то они равны. Но это не очень хороший вариант.
Maxim Prishchepa
Эксперт С++
1920 / 1032 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
14.04.2010, 09:40     Проверить два числа на равенство #3
немного через одно место, но может сработать:
C++
1
2
3
4
double n;
int m;
if(int(n+.5)==m)
{}
RAIDER_55
24 / 24 / 5
Регистрация: 04.04.2010
Сообщений: 229
14.04.2010, 09:51     Проверить два числа на равенство #4
что значит строчка (n+.5). Объясни на примере.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.04.2010, 10:06     Проверить два числа на равенство #5
А почему бы просто не привести int к double?
Maxim Prishchepa
Эксперт С++
1920 / 1032 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
14.04.2010, 11:49     Проверить два числа на равенство #6
Цитата Сообщение от RAIDER_55 Посмотреть сообщение
что значит строчка (n+.5). Объясни на примере.
это очень наглое округление до целого :-)
т.е. если у вас 0.9999 + 0.5 = 1.4999 приводим к целому и получаем 1
RAIDER_55
24 / 24 / 5
Регистрация: 04.04.2010
Сообщений: 229
14.04.2010, 12:17     Проверить два числа на равенство #7
интересно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2010, 15:22     Проверить два числа на равенство
Еще ссылки по теме:
C++ проверить равенство (C++)
Даны два целых числа: A, B. Проверить истинность высказывания: «Каждое из чисел A и B нечетное» C++
Проверить, выполняется ли равенство a<b<c. C++
C++ Проверить равенство с точностью до 10 в степени -4
Как проверить равенство строковых переменных? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
SphiNkSs
5 / 5 / 1
Регистрация: 28.03.2010
Сообщений: 143
14.04.2010, 15:22  [ТС]     Проверить два числа на равенство #8
Решил использовать точность сравнения... Для решения моей задачи подходит)...
Yandex
Объявления
14.04.2010, 15:22     Проверить два числа на равенство
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru