c# - 为什么不引发 "Divide by Zero"或任何其他异常?

标签 c# .net linq ieee-754

我有一个正在执行 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 浮点算术行为。

在您的例子中,您将零除以零,所以您最终得到的不是数字。

关于c# - 为什么不引发 "Divide by Zero"或任何其他异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242441/

相关文章:

c# - 如何在 ODataQueryOptions 上启用 $expand 和 $select?

c# - 为什么 SonarQube 声称 `return` 行没有被单元测试覆盖?

c# - 如何将流写入独立存储中的 xml 文件

.net - Entity Framework 中的导航属性有什么用?

asp.net - 使用哪个 .net 版本? Web 配置中的那个还是构建时使用的那个?

c# - 如何根据属性获得两个类的交集

c# - 在未授权 .net core 时覆盖 redirecturl

c# - 在 ASP.NET Core MVC 的 View 中格式化日期

java - RMI 或 Web 服务示例应用程序

c# - 使用 Union 的匿名类型错误