2009-04-27 3 views
0

Скорее всего очень простой вопрос, пожалуйста, имейте любые ответы легко понять, что я еще совсем новичок в этом:знаков после запятой и Pow функции в C++

Я делаю небольшое приложение, и мне нужно использовать полномочия для нескольких расчетов. После небольшого исследования я нашел функцию 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 сумм, для которых мне нужна эта точность, но если возможно, программа рассчитает ее, будь велика.

Thanks

+0

Google является вашим другом. [Эти результаты] (http://www.google.com/search?q=cout+decimal+places) и [их также] (http://www.google.com/search?q=cout+float+ точность) имеют то, что вы хотите, а именно, что вам нужно использовать setprecision() в качестве параметра cout. –

ответ

3

Для лучшей точности вы должны использовать двойной. У удвоений есть 15 цифр точности против 7 для поплавков.

+0

15 и 7 десятичных цифр являются приблизительными. В частности, 7 для поплавков могут быть немного оптимистичными ... – dmckee

6

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

C-Style

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

C++ Style

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

ИЛИ

std::cout.precision(5); 
std::cout << dummy2 << std::endl; 
// continue to use cout to output 5 decimal places 

 Смежные вопросы

  • Нет связанных вопросов^_^