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

(с++) float и double. Разные результаты - C++

Восстановить пароль Регистрация
 
Uefa
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 5
24.05.2014, 18:01     (с++) float и double. Разные результаты #1
Здравствуйте! Почему при расчете с 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");
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 18:01     (с++) float и double. Разные результаты
Посмотрите здесь:

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

Добавлено через 1 минуту
Вот еще статья на Хабре есть на эту тему.
http://habrahabr.ru/post/201066/
Yandex
Объявления
24.05.2014, 18:34     (с++) float и double. Разные результаты
Ответ Создать тему
Опции темы

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