gpt4 book ai didi

java - java中的BigDecimal问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:58 26 4
gpt4 key购买 nike

BigDecimal bd= new BigDecimal("00.0000000000");
//now bd format to 0E-10
if(BigDecimal.ZERO.equals(bd) || bd.equals("0E-10"))
{
flag=true;
}

上面的代码有两个问题

  1. 为什么变量bd自动格式化为0E-10
  2. if 条件结果为假值,即它不会进入 if block 内。

谁能推荐一下。谢谢

最佳答案

您已经为构造函数提供了小数点后十位数字,因此即使它们全部为零,BigDecimal 仍决定将其内部 scale 设置为 10。这解释了 “0E-10” 中的 -10

至于等于Javadoc says :

Compares this BigDecimal with the specified Object for equality. Unlike compareTo, this method considers two BigDecimal objects equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by this method).

底线:

  1. 使用compareTo()而不是 equals()
  2. 不要直接将 BigDecimalString 进行比较,因为这样是行不通的。

关于java - java中的BigDecimal问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7525284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com