C# 除0异常

C# 除0异常,c#,C#,我遇到了一个关于数字除以0的问题 现在,关于x/0,声明: 因为方程没有解,所以不存在“x/0”这样的东西。所以x/0不代表任何数字 因此,在C#中实现这一点,如果我们将一个数字(double)除以0.0,结果应该是NaN。但是,它显示的是无限 另一方面,对于操作0.0/0.0,写下: 这里的问题是方程0z=0有任何z值作为解(这就是“无限解”的意思) 但是,在C#中执行此操作时,结果是NaN 为什么这种行为在C#中是相反的?他们在实施过程中是否犯了错误 您所指的问题有标签代数预计算,算术 而数

我遇到了一个关于数字除以0的问题

现在,关于
x/0
,声明:

因为方程没有解,所以不存在“x/0”这样的东西。所以x/0不代表任何数字

因此,在C#中实现这一点,如果我们将一个数字(
double
)除以
0.0
,结果应该是
NaN
。但是,它显示的是
无限

另一方面,对于操作
0.0/0.0
,写下:

这里的问题是方程0z=0有任何z值作为解(这就是“无限解”的意思)

但是,在C#中执行此操作时,结果是
NaN

为什么这种行为在C#中是相反的?他们在实施过程中是否犯了错误


您所指的问题有标签
代数预计算
算术

而数学中有一节定义了C#实现的数字行为


因此,该答案对于在其中询问的字段是正确的。

您所指的问题具有标签
代数预计算
算术

而数学中有一节定义了C#实现的数字行为

所以这个答案对于它所问的领域来说是正确的。

实际上,通过“无限解”,它们意味着任何给定的数字都是方程的解,因此,该解不适用

然而,当你将一个非零常数除以零时,答案实际上是(±)无穷大。我懒得解释微积分,所以看看这个:

实际上,通过“无限解”,它们意味着任何给定的数字都是方程的解,因此,解是不适用的


然而,当你将一个非零常数除以零时,答案实际上是(±)无穷大。我懒得解释微积分,所以看看这个:

如果我们谈论的是实数,那么表达式“x/0”就没有真正的解。现在,从数学上讲,我们可以转移到一组不同的数字,比如,定义了0的除法


因此,您在这里真正发现的是,由
双精度
(或大多数浮点值)表示的数字集是而不是实数集。因此,关于实数的一般规则并没有以如此直接的方式真正适用。因此,用这种方式定义除法是完全可以接受的。甚至在数学上。

如果我们谈论的是实数,那么表达式“x/0”就没有真正的解。现在,从数学上讲,我们可以转移到一组不同的数字,比如,定义了0的除法

因此,您在这里真正发现的是,由
双精度
(或大多数浮点值)表示的数字集是而不是实数集。因此,关于实数的一般规则并没有以如此直接的方式真正适用。因此,用这种方式定义除法是完全可以接受的。甚至在数学上。

来自:

IEEE 754浮点数可以表示正无穷大或负无穷大,以及NaN(不是数字)。这三个值来自计算结果未定义或无法准确表示的结果。您还可以故意将浮点变量设置为其中任何一个,这有时很有用。产生无穷大或NaN的一些计算示例:

1/0 = ∞
log (0) = -∞
sqrt (-1) = NaN
当计算产生任何这些值时,也会发生异常;请参见FP例外

基本运算和数学函数都接受无穷大和NaN,并产生合理的输出。正如人们所期望的那样,无穷大通过计算传播:例如,2+∞ = ∞, 4/∞ = 0,阿坦(∞) = 另一方面,π/2.NaN会影响任何涉及到它的计算。除非无论用什么实值代替NaN,计算都会产生相同的结果,否则结果就是NaN

在比较操作中,正无穷大大于除自身和NaN之外的所有值,负无穷大小于除自身和NaN之外的所有值。NaN是无序的:它不等于、大于或小于任何值,包括自身。如果x的值为NaN,则x==x为假。您可以使用此测试值是否为NaN或否,但建议使用isnan函数测试NaN(请参阅浮点类)。此外,=将在应用于NaN时引发异常

h定义宏,允许您显式地将变量设置为无穷大或NaN

宏:浮点无穷大 一种表示正无穷大的表达式。它等于像1.0/0.0这样的数学运算所产生的值。无穷大表示负无穷大

您可以通过将浮点值与此宏进行比较来测试浮点值是否为无穷大。但是,不建议这样做;您应该改用isfinite宏。请参阅浮点类

此宏是在ISO C99标准中引入的

宏:float NAN 表示“非数字”值的表达式。此宏是GNU扩展,仅在支持“非数字”值的计算机上可用,也就是说,在所有支持IEEE浮点的计算机上可用

您可以使用“#ifdef NAN”来测试机器是否支持NAN(当然,您必须安排GNU扩展可见,例如通过定义"GNU"SOURCE,然后必须包括math.h)

IEEE 754还允许另一个不寻常的值:负零。当你将一个正数除以负无穷大,或者当一个负结果小于表示极限时,就会产生这个值。

来自:

IEEE 754浮点数可以表示正无穷大或负无穷大,以及NaN(不是数字)