代码在哪里对C#进行浮点除法?

问题描述 投票:0回答:1

问题

我想看一段执行浮点除法并在除以零时返回Infinity的代码。在哪里可以找到它?

代码示例

想要知道的动机来自于.NET文档中的这段代码。我本来希望得到一个DivideByZeroException,但是我却得到了Infinity

https://docs.microsoft.com/en-us/dotnet/api/system.dividebyzeroexception?view=netframework-4.8#remarks

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

文档

我发现文档指出浮点除以零不会引发异常,所以很好:

https://docs.microsoft.com/en-us/dotnet/api/system.dividebyzeroexception?view=netframework-4.8#remarks

将浮点值除以零不会引发异常;它结果为正无穷大,负无穷大或不是数字(NaN),根据IEEE 754算术规则。因为以下示例使用浮点除法而不是整数除法,该操作不会引发DivideByZeroException异常。

。NET Framework中的代码

在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;
///        }

Doublecorefx实现中也没有任何内容:

public static double operator /(double left, double right)
{
   if (right == 0)
   {
      return double.Infinity;
   }
   else
   {
      ...
   }
}

问题,我想看一段代码进行浮点除法并在除以零时返回Infinity。在哪里可以找到它?代码示例想要知道的动机...

c# floating-point divide-by-zero
1个回答
0
投票

您的代码将编译为以下CIL:

© www.soinside.com 2019 - 2024. All rights reserved.