我是通过一个浮动像这样的所有可能值试图循环:任何人都可以向我解释这个浮点奇怪吗?
float i = 0.0F;
float epsilon = float.Epsilon;
while (i != float.MaxValue) {
i += epsilon;
}
但到达值2.3509887E-38F之后不再增加。
float init = 2.3509887E-38F;
float f = (init + float.Epsilon);
Console.WriteLine(f == init);
我只是好奇,任何人都可以解释为什么?
所以,我可以在四舍五入错误之前将一个16777216的浮点数添加到epsilon,并且该数字看起来非常熟悉(2^24)。
你的第二个代码输出'false' ... –
看到这个类似的问题,它应该给你一些见解:) http://stackoverflow.com/questions/4251298/why-float-maxvalue-float-maxvalue-1-确实返回true – Martin
Blimey,这将需要一段时间。 –