Exception 为什么没有被零除的例外?
为什么下面的代码不抛出一个DeviceByZero异常?相反,它在Groovy中返回无穷大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,因为数字在
(((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);
第一个将抛出算术异常
,第二个返回无穷大