Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
5 / 5 / 3
Регистрация: 28.03.2010
Сообщений: 146
1

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

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

Господа, программеры! Необходимо проверить число с плавающей точкой и целое число на равенство. Проблема заключается в том, что число с плавающей точкой представляются машине в виде ряда и таким образом, имеют не точное значение, а максимально приближенное. Например "1" в итоге равна не "1", а "0.9999999..."... Вот необходимо провести сравнение:
C++
1
2
3
double n;
int m;
if (n==m) {}
Может есть какие нить функции которые позволяют это делать без проблем? Неохото изобретать велосипед)...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2010, 07:47
Ответы с готовыми решениями:

Проверить на равенство два комплексных числа
Задание 1. Pair Проверить на равенство два комплексных числа z и y, вводимых пользователем, в...

Проверить на равенство два числа типа double
Здравствуйте. Подскажите, пожалуйста, как можно сравнить два числа типа double. Одно из них -...

Как проверить на равенство два двумерных массива?
вот код, надо узнать был ли такой элемент в массиве или нет srand(time(0)); bool alreadyThere...

Даны два треугольника; проверить их равенство по заданному признаку
(3 стороны, 2 стороны и угол,сторона и 2 угл) Через цыкл for

7
24 / 24 / 18
Регистрация: 04.04.2010
Сообщений: 229
14.04.2010, 09:29 2
Попробуй задать точность сравнения. И если разность между сравниваемыми числами меньше чем точность то они равны. Но это не очень хороший вариант.
1
Эксперт С++
1931 / 1043 / 109
Регистрация: 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)
{}
0
24 / 24 / 18
Регистрация: 04.04.2010
Сообщений: 229
14.04.2010, 09:51 4
что значит строчка (n+.5). Объясни на примере.
0
Эксперт С++
5017 / 2596 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.04.2010, 10:06 5
А почему бы просто не привести int к double?
1
Эксперт С++
1931 / 1043 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.04.2010, 11:49 6
Цитата Сообщение от RAIDER_55 Посмотреть сообщение
что значит строчка (n+.5). Объясни на примере.
это очень наглое округление до целого :-)
т.е. если у вас 0.9999 + 0.5 = 1.4999 приводим к целому и получаем 1
0
24 / 24 / 18
Регистрация: 04.04.2010
Сообщений: 229
14.04.2010, 12:17 7
интересно
0
5 / 5 / 3
Регистрация: 28.03.2010
Сообщений: 146
14.04.2010, 15:22  [ТС] 8
Решил использовать точность сравнения... Для решения моей задачи подходит)...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2010, 15:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Даны два числа X и Y проверить истинность того что оба числа четные
1. Даны два числа X и Y проверить истинность того что оба числа четные. Проверку на четность...

Даны два целых числа: A, B. Проверить истинность высказывания: «Числа A и B имеют одинаковую четность»
Скоро экзамен , кто чем может ) Помоги ближнему , ибо смех продлевает жизнь...) 6. Даны...

Проверить на равенство два рациональных числа a и b с помощью логической функции Равно
Описать тип запись Рациональное число следующей структуры: числитель – целое; знаменатель – целое....

Проверить на равенство два множества
Написать программу, которая проверит на равенство два множества. Программа почему-то выдает только...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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