【发布时间】:2018-11-05 15:39:27
【问题描述】:
只是好奇事情是如何运作的。 浮点最大值和 epsilon 值为
Single MaxValue = 3.40282347E+38F; // derived from 1.000.. * 2^128
Single Epsilon = 1.401298E-45F; // probably from substracting (1.00..01 - 1.00..0) * 2^-128 ?
但最小的正值应该在 1/MaxValue 或 1*2^-127 左右,这使得 ^-39 或 ^-38 是十进制数字的幂。那么浮点数怎么可能存储低于-38(到-45)的东西呢?
【问题讨论】:
-
“Epsilon”通常用于表示可表示数字之间的步长,通常是从 1 到下一个可表示值的步长。您询问的值是可表示的最小正值。
-
@EricPostpischil:不过,Microsoft 确实将
Single.Epsilon定义为最小的正 IEEE 754 binary32 次正规。我不知道他们为什么选择这样一个令人困惑的名字。这种混淆导致 IronPython 错误地报告了sys.float_info.epsilon对应的Double.Epsilon值。
标签: c# floating-point