关于float在多位数printf时,输出结果不一致的问题
问题
类似,可以看到下面的这个问题
回答
总的来说,浮点数无法表示0.1。
这是因为,根据IEEE浮点数标准,float的尾数是23位,权分别为\(2^{-1},2^{-2},...\)。0.1 = 1/10 = 1/2 * 1/5 = 1 * %2^{-1}% * 1/5,而1/5无法直接找到对应的权,只能通过更小的权来近似。因此float数据类型中,0.1这个值不是真的0.1,所以当要求prinf的尾数较多时,就打印出了真正的值。
https://floating-point-gui.de/basic/
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
本文来自博客园,作者:ijpq,转载请注明原文链接:https://www.cnblogs.com/ijpq/p/15708033.html