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

Куда теряется точность? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функции ввода с клавиатуры элементов массива http://www.cyberforum.ru/cpp-beginners/thread754947.html
Здравствуйте. Прошу, помогите кому не сложно. Описать функции ввода с клавиатуры элементов одномерного массива и определения произведения его элементов, лежащих между его первым и последним нулями....
C++ Error C2109: subscript requires array or pointer type Доброго времени суток! Подскажите, пожалуйста, что нужно изменить, чтобы пропала ошибка error C2109: subscript requires array or pointer type c:\...\crane.cpp в строках 26 и 34? Ругается на... http://www.cyberforum.ru/cpp-beginners/thread754943.html
C++ Одномерный массив. Определить произведение элементов между первым и последим нулями.
Здрасте) Помогите пожалуйста 2. Описать функции ввода с клавиатуры элементов одномерного массива и определения произведения его элементов, лежащих между его первым и последним нулями. Буду...
Треугольник задан координатами своих вершин. Найти его периметр и площадь. C++
Здрасте) Помогите пожалуйста Треугольник задан координатами своих вершин. Найти его периметр и площадь. (Описать функцию вычисления длины стороны). Буду благодарен невероятно.
C++ Определить, есть ли в матрице строка, содержащая больше положительных элементов, чем отрицательных http://www.cyberforum.ru/cpp-beginners/thread754917.html
Здрасте) Помогите пожалуйста 1.Дан двумерный массив размером m на n, заполненный случайными числами. Определить, есть ли в данном массиве строка, содержащая больше положительных элементов, чем...
C++ исправить код. матрица А(3,4).Упорядочить массив С(12), состоящий из элементов А, по возрастанию, найти минимальный по модулю элемент ...чтобы выдавала как матрица #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <time.h>//++ int main(){ const int m=3,n=4; srand(time(NULL)); int... подробнее

Показать сообщение отдельно
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1

Куда теряется точность? - C++

07.01.2013, 17:37. Просмотров 501. Ответов 9
Метки (Все метки)

Для примера, есть формула (a+b)3 - a3. В расчетах с хранением промежуточных результатов и без него получаются разные ответы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
 
int main()
{
    float a = 10.0f, b = 0.01f, c, d;  
    float res1, res2;
    
    // Используем вспомогательные переменные
    c = (a + b) * (a + b) * (a + b);
    d = a * a * a;
    res1 = c - d;
 
    // Без вспомогательных переменных
    res2 = (a + b) * (a + b) * (a + b) - a * a * a;
    
    // Печатаем результат
    std::cout << "res1 = " << std::fixed << res1 << "\n";
    std::cout << "res2 = " << std::fixed << res2 << "\n";
    
    return 0;
}
Код
res1 = 3.002991
res2 = 3.003001
В чем фишка? Арифметические операции над float выполняются с приведением к double?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru