c# – 何时使用NaN或/ -Infinity?

对于float和double,NaN,PositiveInfinity或NegativeInfinity有什么好处?我们何时应该使用或避免它们?

如果有这样的常量,为什么float.Parse(“a”)抛出错误而不是返回float.NaN?

NaN与null有什么不同?为什么浮动类型甚至可以除零?

使用无穷大是因为它们是浮点支持的算术系统的一部分.存在各种操作,例如除以零,其中无穷大是有用的结果并且在数学上是合理的.显然,没有直接的物理量可以是无限的(例如,你不能拥有无限多的克),但无穷大可能是物理过程的数学模型或人类用计算机建模的其他事物的某些方面的有用价值.

使用NaN是因为算术系统不完整.也就是说,存在具有输入值的操作,其中适当的数学结果在浮点内不可表示.例如,sqrt(-1)是合法的数学运算,但结果,即虚数i,在浮点数中不可表示.因此,NaN用作占位符以指示值已超出浮点数. NaN还可以用于其他目的,例如标记未以其他方式初始化的数据,以帮助调试.

float.Parse(“a”)抛出错误而不是返回NaN,因为它不是合法的操作.该表达式不执行在可表示数字之外具有适当结果的数学运算.这是一个实际错误,所以它会抛出一个错误.

相关文章
相关标签/搜索