java - java中的BigDecimal问题

标签 java bigdecimal

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/

相关文章:

java - 二元运算符的错误操作数类型错误 '+'

java - Spring ModelAndView.setViewName ("view")在错误位置搜索

java - 在 Java 中按 "OR"逻辑对谓词进行分区

java - 为什么 BigDecimal.ZERO 是未缩放的?

java - 如何使用 ApfloatMath.round()?

java - 根据用户选项设置 BigDecimal RoundingMode 而不使用 if 语句?

java - JAXB Ant Task - 从哪里获得 JAR?

java - X 天后从数据库中删除项目

java - BigDecimal 舍入不正确

java - 获取 Java BigDecimal 的尾数