问题描述
我要维护的旧版代码具有一个带有double类型变量x的函数。此变量包含以米为单位的位置。预期该值将保持在mm范围内,例如0.0001 然后我注意到了这样的代码中的注释: 目标平台是用于x86_64的Linux 3.10.x,我们使用GCC编译器版本4.9.3。 我尝试了一个小的测试程序,当使用大于或小于1的参数时,确实确实显示了较大(但仍然不是很明显)的错误,但这也可能是由输入和/或结果的方式引起的用浮点数表示? 提供输出:// We will take the 6th power of this variable.
// Convert number to mm to get better accuracy.
x /= 1.0e-3;
double y = pow(x,6.0);
#include <stdio.h>
#include <math.h>
void printpow(double d)
{
double pow6 = pow(d,6.0);
printf("% 8g ^ 6 = %.20g\n",d,pow6);
}
int main(int argc,char **argv)
{
printpow(7.0e-10);
printpow(7.0e-6);
printpow(7.0e-3);
printpow(7.0);
printpow(7.0e3);
printpow(7.0e6);
printpow(7.0e10);
return 0;
}
7e-10 ^ 6 = 1.1764899999999995812e-55
7e-06 ^ 6 = 1.1764899999999999629e-31
0.007 ^ 6 = 1.1764900000000001195e-13
7 ^ 6 = 117649
7000 ^ 6 = 1.1764900000000000603e+23
7e+06 ^ 6 = 1.1764899999999999889e+41
7e+10 ^ 6 = 1.1764900000000000914e+65
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)