c ++中的小数位和Pow函数

时间:2009-04-27 22:49:18

标签: c++ decimal

最有可能是一个非常简单的问题,请保持任何答案易于理解我仍然很新:

我正在制作一个小应用程序,我需要使用权力进行一些计算。经过一番研究后,我发现了战斗机功能,并且发挥了作用。最后我想出了这个剪辑,它起作用了:

#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个小数位。

我在这里做错了什么?我使用了错误的数据类型(浮动)吗?或者仅仅使用2dp是pow功能中的任何限制吗?

我可以,如果它只是用我想要的值定义常量,因为它只需要4或5个总和,我需要这个精度,但如果有可能让程序计算它将是大。

由于

2 个答案:

答案 0 :(得分:6)

我会像fbinder所说的那样做,并使用双打来获得更高的精确度。 要解决您的问题,您有两种选择,C风格和C ++风格。

<强> C-风格

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

C ++风格

#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

答案 1 :(得分:3)

为了获得更好的精确度,你应该使用double。对于花车,双打有15位数的精度,而7位。