为什么没有提出“除以零”或任何其他例外
本文关键字:除以零 任何 其他 为什么 | 更新日期: 2023-09-27 18:31:41
我有一个正在执行 LINQ 操作的double[]
:
MD = MD.Select(n => n * 100 / MD.Sum()).ToArray();
在某些情况下,MD
的所有元素都是 0,然后 Sum
也是零。然后0 * 100 = 0 / 0
,但它没有给出除以零的异常或任何异常。为什么会这样?
试试这个:
double x = 0.0;
double y = 1.0;
double z = y / x;
这也不会引发异常:它会z
为正无穷大。这里没有特定于 LINQ 的内容 - 它只是 IEEE-754 浮点运算行为。
把零除以零,所以你最终得到的不是数字。
IEEE-754 浮点运算:
using System;
using System.Linq;
namespace ConsoleApplication1 {
internal class Program {
private static void Main() {
var MD = new double [] {0, 0, 0, 0, 0};
var result = MD.Select(n => n*100/MD.Sum()).ToArray();
foreach (var item in result) {
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
输出:
NaN
NaN
NaN
NaN
NaN
Sum
是否为零MD
,因为它不包含任何元素?在这种情况下,不会执行 lambda 表达式。