使用幂函数计算得出大数的错误答案

时间:2018-01-23 14:19:07

标签: c++ c++11 math

我有两个值 p = 19,q = 14 。我想使用幂函数pow(p, q)来计算p q

这是我的代码:

long long p=19,q=14;
cout<<pow(p,q);

正确答案是: 799006685782884121 ,但我的代码为我提供了 799006685782884096 ,这是不正确的。

我还尝试使用unsigned long long代替long long进行这些计算,但这并没有帮助。

1 个答案:

答案 0 :(得分:3)

pow函数定义为:

double pow(double x, double y);

这意味着它需要浮点参数并返回浮点结果。由于浮点数的性质,某些数字无法准确表示。你得到的结果可能是最接近的匹配。

另请注意,您正在进行两次(可能是有损的)转换:

  • 将参数从long long转换为double
  • 将函数的结果从double转换为long long