10 ^ 1.64605 = 44.2639330165
但是在C++中使用pow:
double p = pow(10,1.64605) returns 44.2641.
Run Code Online (Sandbox Code Playgroud)
有没有办法提高这里的精度?我尝试将双方都投入long double但是这也没有帮助.
更有趣的是:
cout<<p;
double a = -1.64605;
cout<<pow(10,-a);
p = pow(10, (-p));
cout<<p;
Run Code Online (Sandbox Code Playgroud)
输出是:
-1.64605
44.2639
44.2641
Run Code Online (Sandbox Code Playgroud)
为什么?
cout截断你的双倍显示,但计算的值pow可能至少与你期望的一样精确.有关如何在控制台中显示更多精度,请参阅:
考虑到大卫的推动,我会详细说明.
你说过,double p = pow(10,1.64605) returns 44.2641但这是不正确的.它返回44.26393301653639156; 如果没有任何格式说明符,则显示为44.2639(如稍后所见).
当你cout的原始值p在第二个代码片段则显示-1.64605(由于减少精度格式),并且您假定它是准确-1.64605,而它实际上是介于-1.64605115之间...和... -1.64605213,这不在表达式中求值为44.2641cout << pow(10, (-p));
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |