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

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

Войти
Регистрация
Восстановить пароль
 
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
#1

Сравнение чисел - C++

30.01.2014, 19:15. Просмотров 451. Ответов 3
Метки нет (Все метки)

Есть у меня 2 числа:
3.1000000000000017 и 3.1000000000000000
Они как бы равны, но не получается их в блоке if сравнить.
Как их сравнить до 6-го числа после точки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение чисел (C++):

Сравнение чисел - C++
Скажите, пожалуйста, логику сравнения трёх чисел на языке алгоритма, чтобы рез-т был таким: первое > второе > третье

Сравнение чисел - C++
дан 40 число если число меньше 25 надо прибавить 10. можете помочь

Сравнение чисел. - C++
Вообщем нужно ввести с клавы 3 числа. Нужно чтобы прога вывела их в порядке max, min, middle. В голову кроме if(max<min){}ничего не...

Сравнение 3 чисел - C++
Всем привет)) В колледже задали задание: написать программу, которая сравнивает 3 числа. Три варианта я сделал: #include <iostream> ...

Сравнение чисел - C++
Привет всем!Люди помогите написать программ,которая сравнивает три числа и выдает наибольшее и наименьшее из них.Задача из книги Дейтелов. ...

Сравнение чисел double в do {} while - C++
у меня такой вопрос, есть ли какие нибудь особенности в сравнение чисел типа double? double recon(int **my_matrix, double...

3
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
30.01.2014, 19:22 #2
Suares, грубый вариант:
C++
1
2
int a = 3.1000000000000017 * 1000000;
int b = 3.1000000000000000 * 1000000;
1
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
30.01.2014, 19:37  [ТС] #3
Цитата Сообщение от zelim Посмотреть сообщение
грубый вариант:
Нет, не получается в if сравнить(
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.01.2014, 20:10 #4
Suares,
Если передать функциям меньше и больше параметр orEqual == true, то они превращаются в меньше либо равно, больше либо равно соответственно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cmath>
 
template <typename T> bool dEquals(T left, T right, T precision)
{
    return (fabs(left - right) < precision);
}
template <typename T> bool dLess(T left, T right, T precision, bool orEqual = false)
{
    if(dEquals(left, right, precision)) // За рамками точности, считаем числа равными
        return orEqual;
    return (left < right);
}
template <typename T> bool dGreater(T left, T right, T precision, bool orEqual = false)
{
    if(dEquals(left, right, precision))
        return orEqual;
    return (left > right);
}
 
int main()
{
    double f = 0.333333339, g = 1.0/3.0;
    std::cout << std::boolalpha << "f == g -- " << (f == g) << std::endl;
    // С точностью 8 знаков после запятой - числа равны
    std::cout << "dEquals(f,g) -- "  << dEquals(f,g,0.000001) << std::endl;
    // А вот с точностью 9 знаков уже не равны
    std::cout << "dEquals(f,g) -- "  << dEquals(f,g,0.000000001) << std::endl;
    return 0;
}
1
30.01.2014, 20:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 20:10
Привет! Вот еще темы с ответами:

Сравнение целых чисел - C++
Два практически одинаковых кода, но один работает, а другой нет, с математической точки все отлично, а вот программная хромает, подскажите...

Сравнение двух чисел - C++
Товарищи,не совсем понимаю как, разработать программу, осуществляющую перевод пары произвольных целых чисел из десятичной системы...

сравнение целых чисел - C++
всем привет)))может быть вопрос слишком простым покажется для ВАС!!! Допусим мы имеем следующий код: 1)Вариант 1 int a=11; ...

Сравнение двух чисел - C++
Даны целые числа m и n. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то...


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

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

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