C语言有的运算结果不准确,double类型,含有pow函数

问题遇到的现象和发生背景

发现C语言有的运算结果不准确,求帮忙解决。平台是Qt。

问题相关代码,请勿粘贴截图

double number=0.1*pow(10,-10);
printf("%.1000lf",number);

运行结果及报错内容

运行结果是800多,显然错误

img

我的解答思路和尝试过的方法
我想要达到的结果

测试看看,你这啥编译器啊。VS2010测试没这种现象啊

这个是我的运行结果,是不是你运行的是上次编译的exe. 你重新保存下代码,重新编译之后再运行看看

img

可能是跟编译器的一直机制的问题吧。
你可以用vs2010以上的编译器试一下,或者qt切换到mingw编译器试试,应该结果会不一样。

呃,浮点数精度保存有限度

double类型的浮点数最多只能精确得到15位,输出再多位也没有意义

printf("%.1000lf",number);

改为

printf("%.10lf", number);

把0.1改成整数就没问题,只要是小数就有问题。