将一个非常小的数字添加到除数而不处理被零除异常是一种好习惯吗?
Is it a good practice to add a very small number to the divisor not to deal with division by zero exception?
我想保持我的代码干净并避免不必要的 IF 分支。
将一个非常小的数字添加到除数而不处理被零除异常是一种好习惯吗?下面的代码被认为是一种好的做法吗?
我知道这种比较在这种情况下并非纯粹 100% 准确,但没关系。
double safeDivision(double dividend, double divisor)
{
return (dividend + Double.MIN_VALUE)/(divisor + Double.MIN_VALUE);
}
不,它会产生不需要的结果。您如何处理 "adjusted" 除以 0 后的数字?
工作代码总是比干净但可能有错误的代码更好
为什么在 double
的情况下担心这个?
System.out.println( 1.0 / 0.0);
System.out.println( 0.0 / 0.0);
System.out.println(-1.0 / 0.0);
产量
Infinity
NaN
-Infinity
...毕竟这是正确的结果,对吧?引入不准确的信息只会以一种完全不同的、意想不到的方式伤害你。别这样。
我想保持我的代码干净并避免不必要的 IF 分支。
将一个非常小的数字添加到除数而不处理被零除异常是一种好习惯吗?下面的代码被认为是一种好的做法吗?
我知道这种比较在这种情况下并非纯粹 100% 准确,但没关系。
double safeDivision(double dividend, double divisor)
{
return (dividend + Double.MIN_VALUE)/(divisor + Double.MIN_VALUE);
}
不,它会产生不需要的结果。您如何处理 "adjusted" 除以 0 后的数字?
工作代码总是比干净但可能有错误的代码更好
为什么在 double
的情况下担心这个?
System.out.println( 1.0 / 0.0);
System.out.println( 0.0 / 0.0);
System.out.println(-1.0 / 0.0);
产量
Infinity
NaN
-Infinity
...毕竟这是正确的结果,对吧?引入不准确的信息只会以一种完全不同的、意想不到的方式伤害你。别这样。