【发布时间】:2015-04-22 03:31:25
【问题描述】:
10^1.64605 = 44.2639330165
但是在 C++ 中使用 pow:
double p = pow(10,1.64605) returns 44.2641.
有没有办法提高这里的精度?我尝试将双方都转换为long double,但这也无济于事。
更有趣的是:
cout<<p;
double a = -1.64605;
cout<<pow(10,-a);
p = pow(10, (-p));
cout<<p;
输出是:
-1.64605
44.2639
44.2641
为什么?
【问题讨论】:
-
除了使用 Bignum 库之外,可能没有什么可以让它变得更好。
-
当得到 44.2641 你用什么来显示它?调试器?考特?打印?
-
尝试添加 #include
然后 cout -
您使用的是哪个编译器/操作系统?在输出上使用 setprecision 调用时,我最终得到 44.26393302。
-
正在做: printf("%.12f\n",pow(10,1.64605));我得到:44.263933016536