javascript 无法在Groovy中添加Long值

hgqdbh6s  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(98)

无法在Groovy中添加Long值。当我们求和时,它不是在小数后增值。

Long val1 = makeNullZero(getCustomFieldValue('Benefit 1 Annual $'));
  Long val2 = makeNullZero(getCustomFieldValue('Benefit 2 Annual $'));
  Long val3 = makeNullZero(getCustomFieldValue('Benefit 3 Annual $'));
  Long val4 = makeNullZero(getCustomFieldValue('Benefit 4 Annual $'));
  Long val5 = makeNullZero(getCustomFieldValue('Estimated Development Cost $'));

  BigDecimal sum = (val1 + val2 + val3 + val4) / val5 
  return sum.round(2);

当我们sum =(2。五加二点五加二。5 + 2.5),得8。应该是10

sum = (2.5 + 2.5 + 2.5 + 2.5) / 3

得到2.67,应该是3。33
我们求和时,不是小数点后的加法。得到8,应该是10

5vf7fwbs

5vf7fwbs1#

数据类型Long2.5截断为2,结果为2 + 2 + 2 + 2 = 8
尝试将值存储在BigDecimal中:

BigDecimal val1 = makeNullZero(getCustomFieldValue('Benefit 1 Annual $'));
BigDecimal val2 = makeNullZero(getCustomFieldValue('Benefit 2 Annual $'));
BigDecimal val3 = makeNullZero(getCustomFieldValue('Benefit 3 Annual $'));
BigDecimal val4 = makeNullZero(getCustomFieldValue('Benefit 4 Annual $'));
BigDecimal val5 = makeNullZero(getCustomFieldValue('Estimated Development Cost $'));

我还建议使用adddivide,因为这样你可以更好地控制精度和舍入:

BigDecimal sum = val1.add(val2).add(val3).add(val4).divide(val5, 2, RoundingMode.HALF_UP);

相关问题