C++ 使用幂函数的计算给出了大数的错误答案

C++ 使用幂函数的计算给出了大数的错误答案,c++,c++11,math,C++,C++11,Math,我有两个值p=19,q=14。我想用幂函数计算pqpow(p,q) 这是我的密码: long long p=19,q=14; cout<<pow(p,q); long p=19,q=14; cout将pow功能定义为: double pow(double x, double y); 这意味着它接受浮点参数并返回浮点结果。由于浮点数的性质,有些数字无法精确表示。你得到的结果可能是最接近的匹配 还要注意,您正在进行两次(可能是有损)转换: 将参数从long转换为double,以及

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

这是我的密码:

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

cout将
pow
功能定义为:

double pow(double x, double y);
这意味着它接受浮点参数并返回浮点结果。由于浮点数的性质,有些数字无法精确表示。你得到的结果可能是最接近的匹配

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

  • 将参数从
    long
    转换为
    double
    ,以及
  • 将函数结果从
    double
    转换为
    long

pow
使用浮点数…可能会重复得到相同的结果,请出示me@RakeshSharma如果您使用的是MSVC,那么长双精度
与不能存储所有64位int的双精度相同precisely@RakeshSharma你得到了多个好答案。你读过吗?您还不明白的是什么?double只能存储54位,或任何精度的17位小数。@Gemtylor它是53位~15-17位,而不是54位