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

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

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

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

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

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

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

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

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

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

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

Сравнение двух чисел - C++
Здравствуйте. Мне нужно решить простенькую задачу - нужно найти результат выражения c=a/b. Но имеется определенное условие - результат...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
30.01.2014, 19:37  [ТС]     Сравнение чисел #3
Цитата Сообщение от zelim Посмотреть сообщение
грубый вариант:
Нет, не получается в if сравнить(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 20:10     Сравнение чисел
Еще ссылки по теме:

Сравнение трёх чисел - C++
Теоретический вопрос. Драсте. Наткнулся на форуме на эту тему: http://www.cyberforum.ru/pascal/thread32113.html. Пробежался глазами, особо...

Сравнение двух чисел - C++
Заданы два натуральных числа A и B. Требуется вывести =, если они равны; <, если A < B; и >, если A > B. Гарантируется, что числа не...

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

Сравнение длинных чисел >, < - C++
Доброго времени суток всем. помогите пожалуйста прояснить алгоритм сравнения относительно длинных чисел (например 2 в 512 степени) ,...

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

Сравнение рациональных чисел - C++
Есть класс дроби, с полями чисельник и знаменник. Надо перегрузить операторы (&gt; , &lt; ,&gt;= , &lt;= , = , !=) для них. типа чтоб в коде можно...


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

Или воспользуйтесь поиском по форуму:
gromo
370 / 269 / 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;
}
Yandex
Объявления
30.01.2014, 20:10     Сравнение чисел
Ответ Создать тему
Опции темы

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