你在说什么“概念”?
您提到的数字都不能以二进制浮点格式精确表示(无论精度如何)。您提到的所有数字最终在点之后都有无限数量的二进制数字。
由于既没有float
也double
没有无限的精度,在float
和格式中,实现将近似地double
表示这些值,最有可能通过最接近的可表示二进制浮点值。对于和 ,这些近似值会有所不同。并且近似值最终可能会大于或小于近似值。因此,您观察到的结果。float
double
float
double
例如在我的实现中, 的值0.7
表示为
+6.9999998807907104e-0001 - float
+6.9999999999999995e-0001 - double
同时 的值0.1
表示为
+1.0000000149011611e-0001 - float
+1.0000000000000000e-0001 - double
As you can see, double
representation is greater than float
representation in the first example, while in the second example it is the other way around. (The above are decimal notations, which are rounded by themselves, but they do have enough precision to illustrate the effect well enough.)