C++ 使用幂函数的计算给出了大数的错误答案
我有两个值p=19,q=14。我想用幂函数计算pqC++ 使用幂函数的计算给出了大数的错误答案,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,以及
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位