相关疑难解决方法(0)

不同值类型之间的除零行为不一致

请考虑以下代码和评论:

Console.WriteLine(1 / 0); // will not compile, error: Division by constant zero

int i = 0;
Console.WriteLine(1 / i); // compiles, runs, throws: DivideByZeroException

double d = 0;
Console.WriteLine(1 / d); // compiles, runs, results in: Infinity   
Run Code Online (Sandbox Code Playgroud)

我可以理解编译器在运行时主动检查除零常量和DivideByZeroException但是:

为什么在"除零"中使用双精度返回Infinity而不是抛出异常?这是设计还是错误?

只是为了踢,我也在VB.NET中做到了这一点,结果是"更一致":

dim d as double = 0.0
Console.WriteLine(1 / d) ' compiles, runs, results in: Infinity

dim i as Integer = 0
Console.WriteLine(1 / i) '  compiles, runs, results in: Infinity

Console.WriteLine(1 / 0) ' compiles, runs, results in: Infinity …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net divide-by-zero .net-3.5

41
推荐指数
2
解决办法
1万
查看次数

标签 统计

.net ×1

.net-3.5 ×1

c# ×1

divide-by-zero ×1

vb.net ×1