десятичные разряды и функция Pow в c ++ - PullRequest
0 голосов
/ 28 апреля 2009

Скорее всего, очень простой вопрос, пожалуйста, держите любые ответы легкими для понимания. Я все еще новичок в этом:

Я делаю небольшое приложение, и мне нужно использовать полномочия для пары вычислений. После небольшого исследования я нашел функцию pow в cmath, и у меня была игра. В конце концов я придумал этот фрагмент, который работает:

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{
    float dummy2, test(6.65);
    dummy2 = (float) pow((float) 3.57, test);
    cout << dummy2;

    return 0;   
}

и возвращает правильный ответ (4734.17), но только с двумя десятичными знаками. Я хочу 5 десятичных знаков предпочтительно.

Что я тут не так сделал? Я использую неправильный тип данных (с плавающей точкой)? Или это предел того, что есть в функции pow для использования только 2dp?

Я мог бы, если бы это произошло, просто определить константы со значениями, которые я хочу, так как это всего лишь 4 или 5 сумм, для которых мне нужна эта точность, но если возможно, чтобы программа вычислила это так, большой.

Спасибо

Ответы [ 2 ]

6 голосов
/ 28 апреля 2009

Я бы сделал, как говорит fbinder, и использовал бы Doubles для большей точности. Чтобы решить вашу проблему, у вас есть два варианта: стиль C и стиль C ++.

C-Style

#include <cstdio>
printf("%.5f", dummy2);

C ++ Style

#include <iomanip>
std::cout << setprecision(5) << dummy2 << std::endl;

OR

std::cout.precision(5);
std::cout << dummy2 << std::endl;
// continue to use cout to output 5 decimal places
3 голосов
/ 28 апреля 2009

Для большей точности вы должны использовать double. Doubles имеет 15 цифр точности против 7 для чисел с плавающей запятой.

...