【发布时间】:2016-10-27 19:31:38
【问题描述】:
在 C# 中,如果你 0/0 你会得到一个异常。
但如果您使用0.0/0 或0.0/0.0,您将分别得到double.NaN 和double.Infinity。
但如果将这些结果转换为 int,则会得到 0。
> (int)double.PositiveInfinity
0
> (int)double.NaN
0
为什么会这样?运行时不应该给出转换错误,因为无穷大显然不是零吗?
【问题讨论】:
-
你用的是什么工具?在普通应用中,
NaN == -2147483648,或使用checked {}时出现异常 -
在我自己的小应用程序中, (int)Double.NaN 在 x64 机器上为 -1,在 Arm 上为 0。这导致了各种非常奇怪的问题!
标签: c#