b的输出结果每次都不一样是因为double类型只能精确表示15位十进制数字,而0.12345678901234567890超过了这个精度限制,所以它在内部被进行了一些近似处理,所以每次输出的结果都可能会有一些微小的差异。

而a的输出结果每次都一样是因为float类型只能精确表示7位十进制数字,所以0.12345678901234567890超过了这个精度限制,所以它在内部也被进行了一些近似处理,但是由于float类型的精度限制比double类型更低,所以近似处理的差异更小,因此输出结果更加一致。

#include stdiohvoid main	float a = 012345678901234567890; double b = 012345678901234567890;	printfa=30fn a; printfb=30fn b;为什么b的输出结果每次都不一样而a每次的输出结果都是一样的

原文地址: http://www.cveoy.top/t/topic/ilEs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录