【发布时间】:2019-02-26 21:04:55
【问题描述】:
如果我取 float 的低 31 位(指数和尾数)并一个接一个地遍历它们,得到的浮点数按升序排列,从 0 开始,到 float.MaxValue,然后到 @ 987654325@,然后是float.NaN 的许多不同位模式。
这个不错的属性似乎不适用于decimal 数据类型。有没有办法以类似的方式按升序遍历所有可表示的十进制值(在下限和上限之间)?
奖励:是否有快速计算可能数字的方法?
附加信息:可以将 1.0 和 1.00 算作两个不同的数字。
【问题讨论】:
-
你在这里读过乔恩的回答吗? stackoverflow.com/questions/3801440/… 或许能有所启发。据我所知,这可能是不可能的,因为同一个数字有多种表示形式。
-
@AlexandruClonțea:遍历所有可表示的值当然是可能的。一个人会跳过非规范表示(对于任何所需的规范分配)。
-
@EricPostpischil 啊....好点。可能是时候睡觉了。脑子慢。这么晚了不能编辑我的评论,我仍然认为那篇文章可能有用
-
@AlexandruClonțea:我读过这篇文章,我知道
decimal数据类型在内存中的样子。我仍然没有找到一个好方法来枚举或计算两个给定小数 min 和 max 之间的可表示小数。
标签: c# floating-point