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

Вычислить значение для float при использовании pow - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как сделать мини-игру Шарики http://www.cyberforum.ru/cpp-beginners/thread756425.html
Всем привет, надо сделать мини-игру Шарики собственно прикрепил рисунок мини - игры. Схема такая : Когда нажимаешь на кнопки расположенные между кнопкой ,шарики двигаются по часовой. Пример: Нажимаешь кнопку 1 расположенные между кнопкой шарики двигаются по часовой стрелке а потом если нажать на 2 кнопку тогда тоже расположенные между кнопкой двигаются по часовой но берет 1 шарик из 1 слота и...
C++ Наследование Классов с++ при компицяции выдаёт Unresolved external 'chelovek::chelovek(int,int,int)' referenced from ...*.OBJ В чом ошибка??? #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) http://www.cyberforum.ru/cpp-beginners/thread756424.html
C++ Составить блок-схему
помогите составить блок-схему для этой программы. программа перемножающая два многочлена(полинома) #include <iostream> #include <sstream> #include <string> #include <stdlib.h> #include <stdio.h> using namespace std; ////////////////////////////////////////////////////////////////////////// class Polinomial{ private:
C++ Создать меню настроек в консоли
Доброй ночи В одном из заданий написано: 1. После запуска, программа переходит в режим "НАСТРОЙКА", в котором на экран дисплея выводится МЕНЮ (в символьном режиме), позволяющее задать следующие параметры: a) способ формирования символов: 1 – РУЧНОЙ, 2 - АВТОМАТИЧЕСКИЙ; b) длительность "тире" (с); c) длительность "точки" (с); d) длительность "паузы 1" e) длительность "паузы 2"
C++ Задача со строками http://www.cyberforum.ru/cpp-beginners/thread756395.html
Помогите решить задачу: На острове Буяне жили N человек, каждый из которых был либо рыцарем либо лжецом, встали в круг. Рыцари говорят только правду, лжецы всегда только лгут. Каждому человеку в кругу задали вопрос: «Кто ты и кто твой сосед слева: рыцарь или лжец?» При этом каждый человек сказал, что он – рыцарь. А ответы всех людей о левом соседе были записаны в следующем формате: 1 – рыцарь...
C++ Подсчитать число вхождений элемента в список Условие: Описать функцию, которая подсчитывает число вхождений элемента Е, значение ко-торого введено с клавиатуры, в списке Q. #include <iostream> # include <conio.h> #include <math.h> #include <stdlib.h> using namespace std; void main() подробнее

Показать сообщение отдельно
XpoHoc
39 / 18 / 2
Регистрация: 10.04.2011
Сообщений: 72

Вычислить значение для float при использовании pow - C++

09.01.2013, 06:24. Просмотров 327. Ответов 1
Метки (Все метки)

Добрый день!
При вычислении выражения двумя типами float и double столкнулся со следующей проблемой.
При использовании pow для float значения слишком отличны. Почему?
C++ (Qt)
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
31
32
33
34
35
36
37
38
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    float a = 1000, b = 0.0001;
    double a1 = 1000, b1 = 0.0001;
    
    float res;
    double res1;
 
    // Расчитываем по формуле
    float c = pow(a + b, 3);
    float d = pow(a, 3); 
    float e = 3 * a * a * b;
    float f = 3 * a * b * b;
    float g = pow(b, 3);
    
    res = (c - (d + e)) / (f + g);
    
    double c1 = pow(a1 + b1, 3);
    double d1 = pow(a1, 3); 
    double e1 = 3 * a1 * a1 * b1;
    double f1 = 3 * a1 * b1 * b1;
    double g1 = pow(b1, 3);
 
    res1 = (c1 - (d1 + e1)) / (f1 + g1);
 
    // Печатаем результат
    cout << "double: a=" << a1 << " b=" << b1 << "\n"; 
    cout << "res = " << fixed << res1 << "\n";
 
    cout << "float: a=" << a << " b=" << b << "\n"; 
    cout << "res = " << fixed << res << "\n";
    return 0;
}
Результат для float 2800000.000000
Результат для double 0.997384

Если использовать для float формулу уравнения:
C++ (Qt)
1
res = ((a * a * a + 3 * a * a * b + 3 * a * b * b + b * b * b) - (a * a * a + 3 * a * a * b)) / (3 * a * b * b + b * b * b);
Результат для float 1.001358
Компилятор VS2008.
Можно ли при использовании pow для float добится более точных результатов?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru