发现C语言有的运算结果不准确,求帮忙解决。平台是Qt。
double number=0.1*pow(10,-10);
printf("%.1000lf",number);
运行结果是800多,显然错误
测试看看,你这啥编译器啊。VS2010测试没这种现象啊
这个是我的运行结果,是不是你运行的是上次编译的exe. 你重新保存下代码,重新编译之后再运行看看
可能是跟编译器的一直机制的问题吧。
你可以用vs2010以上的编译器试一下,或者qt切换到mingw编译器试试,应该结果会不一样。
呃,浮点数精度保存有限度
double
类型的浮点数最多只能精确得到15位,输出再多位也没有意义
printf("%.1000lf",number);
改为
printf("%.10lf", number);
把0.1改成整数就没问题,只要是小数就有问题。