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

Куда теряется точность? - 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? Ругается на отсутствие массива? main.cpp #include "stdafx.h" #include <iostream> #include "crane.cpp" using namespace std; http://www.cyberforum.ru/cpp-beginners/thread754943.html
C++ Одномерный массив. Определить произведение элементов между первым и последим нулями.
Здрасте) Помогите пожалуйста 2. Описать функции ввода с клавиатуры элементов одномерного массива и определения произведения его элементов, лежащих между его первым и последним нулями. Буду благодарен невероятно.
Треугольник задан координатами своих вершин. Найти его периметр и площадь. C++
Здрасте) Помогите пожалуйста Треугольник задан координатами своих вершин. Найти его периметр и площадь. (Описать функцию вычисления длины стороны). Буду благодарен невероятно.
C++ Определить, есть ли в матрице строка, содержащая больше положительных элементов, чем отрицательных http://www.cyberforum.ru/cpp-beginners/thread754917.html
Здрасте) Помогите пожалуйста 1.Дан двумерный массив размером m на n, заполненный случайными числами. Определить, есть ли в данном массиве строка, содержащая больше положительных элементов, чем отрицательных. Буду благодарен невероятно.
 

Показать сообщение отдельно
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
07.01.2013, 17:37     Куда теряется точность?
Для примера, есть формула (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?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru