我知道浮点变量以符号 - 指数 - 分数格式存储数字(正如它在IEEE 754中所述),它永远不会精确,我可能永远不会比较两个浮点数指定精度。
但为什么0.09f-0.01f正好给你0.0800000057f的值?当我进行减法时,在.NET VM的内部和内存中究竟发生了什么?
答案 0 :(得分:2)
0.09
在ieee-754中表示为00111101101110000101000111101100
,最接近0.09000000357627869
的十进制值
0.01
在ieee-754中表示为00111100001000111101011100001010
,最接近0.009999999776482582
的十进制值
它们的减法产生00111101101000111101011100001011
,它最接近0.08000000566244125
你可以看到实际的减法是如何完成的here