我想看一段执行浮点除法并在除以零时返回Infinity
的代码。在哪里可以找到它?
想要知道的动机来自于.NET文档中的这段代码。我本来希望得到一个DivideByZeroException
,但是我却得到了Infinity
。
using System;
public class Example
{
public static void Main()
{
int number1 = 3000;
int number2 = 0;
Console.WriteLine((double)number1 / number2);
}
}
// The example displays the following output:
// Infinity
我发现文档指出浮点除以零不会引发异常,所以很好:
将浮点值除以零不会引发异常;它结果为正无穷大,负无穷大或不是数字(NaN),根据IEEE 754算术规则。因为以下示例使用浮点除法而不是整数除法,该操作不会引发DivideByZeroException异常。
在Visual Studio中,我将鼠标悬停在“ /”分隔符号上,并且显示了Resharper显示>
double double.operator /(double left, double right)
现在,我想看看它的实现,看看如何返回
Infinity
。但是我找不到它。
我在这里检查过
上面的链接然后带我到这里
但是也没有关于实现的细节。
我也看过这里
/// Double IArithmetic<Double>.Divide(Double divisor, out bool overflowed) { /// Double s = m_value / divisor; /// overflowed = IsInfinity(s) || IsNaN(s); /// return s; /// }
Double
的corefx实现中也没有任何内容:
我原本希望这样的东西(伪代码):
public static double operator /(double left, double right)
{
if (right == 0)
{
return double.Infinity;
}
else
{
...
}
}
问题,我想看一段代码进行浮点除法并在除以零时返回Infinity。在哪里可以找到它?代码示例想要知道的动机...
您的代码将编译为以下CIL: