Exception 为什么没有被零除的例外?

Exception 为什么没有被零除的例外?,exception,groovy,logic,Exception,Groovy,Logic,为什么下面的代码不抛出一个DeviceByZero异常?相反,它在Groovy中返回无穷大 (((99.0f-0.0f)/(0.0f))*100).round(2)​ 这与Java中的相同。 重要的一点是Groovy如何将数字转换为对象并处理运算符 Groovy中的1.0/0抛出算术异常,因为数字在内部用作BigDecimal的实例,除法运算符实现为引发异常的BigDecimal.divide(BigDecimal) Groovy中的1f/0f与Java中的一样返回Infinity,因为数字在

为什么下面的代码不抛出一个DeviceByZero异常?相反,它在Groovy中返回无穷大

(((99.0f-0.0f)/(0.0f))*100).round(2)​

这与Java中的相同。
重要的一点是Groovy如何将数字转换为对象并处理运算符

Groovy中的
1.0/0
抛出
算术异常
,因为数字在内部用作
BigDecimal
的实例,除法运算符实现为引发异常的
BigDecimal.divide(BigDecimal)

Groovy中的
1f/0f
与Java中的一样返回
Infinity
,因为数字在内部用作明确请求的
Float
的实例,因此除法运算符是返回
Infinity
的标准Java
//code>

比较Java中的这两行代码

System.out.println(new BigDecimal(1f).divide(new BigDecimal(0f)));
System.out.println(1f/0f);

第一个将抛出
算术异常
,第二个返回
无限

,这与Java中相同。
重要的一点是Groovy如何将数字转换为对象并处理运算符

Groovy中的
1.0/0
抛出
算术异常
,因为数字在内部用作
BigDecimal
的实例,除法运算符实现为引发异常的
BigDecimal.divide(BigDecimal)

Groovy中的
1f/0f
与Java中的一样返回
Infinity
,因为数字在内部用作明确请求的
Float
的实例,因此除法运算符是返回
Infinity
的标准Java
//code>

比较Java中的这两行代码

System.out.println(new BigDecimal(1f).divide(new BigDecimal(0f)));
System.out.println(1f/0f);
第一个将抛出
算术异常
,第二个返回
无穷大