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

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

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

Разные результаты при расчетах с float и double - C++

24.05.2014, 18:01. Просмотров 454. Ответов 5
Метки нет (Все метки)

Здравствуйте! Почему при расчете с float и double получаю разные результаты?

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
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
 
void main ()
{
    float a=1000, b=0.0001, c, d, e, f, g;
    c = pow((a+b), 2);
    d = pow(a, 2); 
    e = 2*a*b;
    f = pow(b, 2);
    g = (c - (d + e))/f;
    cout << g << "\n";
 
    double A=1000, B=0.0001, C, D, E, F, G;
    C = pow((A+B), 2);
    D = pow(A, 2);
    E = 2*A*B;
    F = pow(B, 2);
    G = (C - (D + E))/F;
    cout << G << "\n";
 
    system("pause");
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 18:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разные результаты при расчетах с float и double (C++):

Почему при преобразования из float в double коверкается число? - C++
float fll=34.23; cout &lt;&lt; &quot; fll=&quot;&lt;&lt; fll; //Вот тут я ввожу double dub; dub = (double)fll;cout&lt;&lt;&quot; dub=&quot;&lt;&lt;dub; // А вот тут оно уже :...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

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

Вычислить значение выражения при различных вещественных типах данных (float и double) - C++
Решите пожалуйста =* Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять...

OpenMP при распараллеливании цикла иногда выдает разные результаты - C++
Доброго времени суток, ув. форум! Я новичек и в С++ и в OpenMP Играюсь со следующей программкой для вычисления Пи: #include...

float double int - C++
Доброй ночи, препод совсем запарил, то ему не так, то ему не эдак. // 8.2.cpp: определяет точку входа для консольного приложения. // ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
24.05.2014, 18:10 #2
http://docs.oracle.com/cd/E19957-01/..._goldberg.html
0
Uefa
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 5
24.05.2014, 18:13  [ТС] #3
Английским к сожалению не владею, не могли бы вы хотя бы кратко рассказать из-за чего такая разница в результатах?
0
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
24.05.2014, 18:21 #4
Проблема в самом представлении числа с плавающей точкой. Некоторые числа с плавающей точкой нельзя "представить точно", а можно только получить приблизительный результат. Тип double имеет "двойную точность" представления (обычно 16-17 десятичные цифры точности), а float только 7-8. Про это есть много статей в интернете.
0
Uefa
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 5
24.05.2014, 18:31  [ТС] #5
т.е. в данном примере я как раз и получил такое число, которое "нельзя представить точно"? А float и double просто по разному округлили?
0
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
24.05.2014, 18:34 #6
Цитата Сообщение от Uefa Посмотреть сообщение
т.е. в данном примере я как раз и получил такое число, которое "нельзя представить точно"? А float и double просто по разному округлили
В целом - да.

Добавлено через 1 минуту
Вот еще статья на Хабре есть на эту тему.
http://habrahabr.ru/post/201066/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 18:34
Привет! Вот еще темы с ответами:

Float/double IEEE754 - C++
Доброго вечера! Как я понимаю на вычисления с плавающей точкой влияет процессор, и компилятор языка. Как узнать поддерживает ли...

Задание с float и double - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); float fA, fB, fC, fD,...

Long float и double - C++
В чем отличие long float от double?

Преобразование в float и double - C++
Начал читать книгу Шилдта. В одном из его примеров было показано преобразование типов int в float. Но при компилировании выражения я...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.05.2014, 18:34
Ответ Создать тему
Опции темы

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