所以我有一个小问题,出于性能原因,我一直在研究将我的C#代码的一部分转移到C++中。现在当我查看C#中的float.Epsilon时,它的值与我的C++值不同。
在C#中,该值的描述 by microsoft 是1.401298E-45。
在C++中,该值的描述 by cppreferences 是1.19209e-07;
为什么浮点数/单精度浮点数的最小可能值在这些语言之间会有所不同呢?
如果我没错的话,二进制值应该在字节数和甚至二进制值方面相等。或者我看待这个问题的方式有误吗?
希望有人可以帮助我,谢谢!
在C#中,该值的描述 by microsoft 是1.401298E-45。
在C++中,该值的描述 by cppreferences 是1.19209e-07;
为什么浮点数/单精度浮点数的最小可能值在这些语言之间会有所不同呢?
如果我没错的话,二进制值应该在字节数和甚至二进制值方面相等。或者我看待这个问题的方式有误吗?
希望有人可以帮助我,谢谢!
Float
中有 Epsilon 值的一半;它是不可表示的。(b)“格式由符号、23 位尾数或有效数字组成…”:有效数字是 24 位,虽然存储为 23 位在一个字段中,并且还有 1 位取决于指数字段。 - Eric Postpischil