Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BigDecimal除法抛出算术异常:即使在我检查时也被零除法_Java_Talend_Ternary Operator - Fatal编程技术网

Java BigDecimal除法抛出算术异常:即使在我检查时也被零除法

Java BigDecimal除法抛出算术异常:即使在我检查时也被零除法,java,talend,ternary-operator,Java,Talend,Ternary Operator,嘿,伙计们,我现在和talend一起工作,必须计算一些KPI 我每次都会得到算术异常:被零除,即使我在不同的计算中遵循相同的模式,并且它们工作没有问题 (((functions_pattern.checkIfNull(opportunities1.tatsaechlicherumsatz)) == BigDecimal.ZERO) || ((functions_pattern.checkIfNull(rechnung1.netto)) == BigDecimal.ZERO)) ? Big

嘿,伙计们,我现在和talend一起工作,必须计算一些KPI

我每次都会得到算术异常:被零除,即使我在不同的计算中遵循相同的模式,并且它们工作没有问题

(((functions_pattern.checkIfNull(opportunities1.tatsaechlicherumsatz)) == 
BigDecimal.ZERO) || ((functions_pattern.checkIfNull(rechnung1.netto)) == 
BigDecimal.ZERO))
 ?  BigDecimal.ZERO  
 : (rechnung1.netto.divide(opportunities1.tatsaechlicherumsatz , 
    java.math.MathContext.DECIMAL32))
functions\u pattern.checkIfNull
null
值设置为零(在本例中为
BigDecimal.zero
),我也尝试了各种不同的方法(单独的
null
检查等)


另外,由于我与talend合作,我必须使用三元运算符。

使用
==
测试
大十进制
是个坏主意

即使假设
checkIfNull
null
时返回
Decimal.ZERO
,您仍然存在
rechnung1.netto
可能是
的零的问题=
Decimal.ZERO

另外,
equals
还有一个问题,即两个
BigDecimal
值必须相等,才能认为相等

这是测试(非空)
BigDecimal
值是否为零的安全方法:

 BigDecimal x = ...
 if (x.compareTo(BigDecimal.ZERO) == 0) {
     // it is zero
 } else {
     // it is not zero
 }