0

很可能是一个非常简单的问题,请保持任何答案易于理解我对此还是很陌生:

我正在制作一个小应用程序,我需要使用幂进行几次计算。经过一番研究,我在 cmath 中找到了 pow 函数,并玩了一把。最后我想出了这个片段,它有效:

#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 个总和,但如果可以让程序计算它,那就太好了。

谢谢

4

2 回答 2

6

我会按照 fbinder 所说的那样做,并使用 Doubles 来获得更高的精度。为了解决您的问题,您有两种选择,C 风格和 C++ 风格。

C型

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

C++ 风格

#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
于 2009-04-27T23:07:18.033 回答
3

为了获得更好的精度,您应该使用双精度。Doubles 的精度为 15 位,而浮点数为 7。

于 2009-04-27T22:52:29.053 回答