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

Сравнение вещественных чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
06.03.2013, 12:27     Сравнение вещественных чисел #1
Привет, ребят! Нужна ваша мудрость.

На днях думал о реализации класса complex<class scalar> из std и о реализации класса 3D-точек, который хавал бы при инстанцировании, подобно complex, тип скаляра (float, double...).

Возник вопрос - никак не выходит из головы: а действительна ли корректна реализация, скажем, operator== посредством сравнения координат в составе класса с помощью ==, ведь координаты представлены числом с плавающей точкой. Что-то у меня в голове переклинило и думается, что могуч был бы иной вариант сравнения - с использованием, скажем, проверки того, не превышает ли расстояние между сравниваемыми точками некоторого заданного оч. маленького числа?

Напишите, пожалуйста, свои соображения на этот счет. Может я просто переработал?

Буду благодарен за ответы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2013, 12:27     Сравнение вещественных чисел
Посмотрите здесь:

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 C++
C++ Перевод вещественных из системы в систему, сравнение вещественных
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. C++
C++ Вывод чисел, стоящих на четных местах, в десятичной с.с., а чисел, стоящие на нечетных местах, как вещественных с одним знаком после запятой
C++ Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11819 / 6798 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
06.03.2013, 12:36     Сравнение вещественных чисел #2
Так залезьте в файл и посмотрите. Это же шаблонный класс.
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
06.03.2013, 13:13  [ТС]     Сравнение вещественных чисел #3
Залез - лучше бы не лез туда, спал бы спокойнее.
Там чёрт ногу сломит, как ваще можно было написать такую жесть
в общем, не увидел ничего, что свидетельствует о каком-то особом способе сравнения на равенство.
Зато, погуглив, обнаружил такую фигню, как
C++
1
std::numeric_limits<double>::epsilon()
. Короче, теперь еще больше вопросов.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.03.2013, 12:45     Сравнение вещественных чисел #4
Цитата Сообщение от ITcrusader Посмотреть сообщение
Залез - лучше бы не лез туда, спал бы спокойнее.
Там чёрт ногу сломит, как ваще можно было написать такую жесть
Каждый раз, когда смотрю исходники стандартной библиотеки (что gcc-шные, что мелкомягкие), у меня возникает подозрение, что они пропущены через простенький обфускатор. Потому что сильно сомневаюсь, что так испоганить (внешне) исходный код человек не мог.
Цитата Сообщение от ITcrusader Посмотреть сообщение
в общем, не увидел ничего, что свидетельствует о каком-то особом способе сравнения на равенство.
Я тоже. Странно, что для double и long double имеется явная специализация, но операторов сравнения нет (т.е. используются те, которые перегружены для обобщённого std::complex<T>).
Yandex
Объявления
11.03.2013, 12:45     Сравнение вещественных чисел
Ответ Создать тему
Опции темы

Текущее время: 14:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru