我有代码来计算2个数字之间的百分比差异(oldNum - newNum) / oldNum * 100;- 其中两个数字都是doubles.我希望在oldNum为0的情况下添加某种检查/异常处理.但是,当我为oldNum和newNum进行了值为0.0的测试运行时,执行继续,好像什么都没发生并且没有抛出错误.使用ints 运行此代码肯定会导致算术除零异常.为什么Java在涉及到doubles 时会忽略它?
我只是好奇这个:
1/0在Java中进行评估时,会发生以下异常:
线程"main"中的异常java.lang.ArithmeticException:/在Foo.main中为零(Foo.java:3)
但是1/0.0被评估为Infinity.
public class Foo {
public static void main (String[] args) {
System.out.println(1/0.0);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
可能重复:
为什么Java除以0.0时不会抛出异常?
为什么Java中的以下语句不会报告ArithmeticException?
double d = 1.0/0;
Run Code Online (Sandbox Code Playgroud)