那是因为4.0和4.00赋值个bigdecimal之后都被截成 4 了.
不信你println(b1.toString()+" "+b2.toString())看看

解决方案 »

  1.   

    知道了,谢啦。
    改成:
    import java.math.BigDecimal;
    class Test {
    public static void main(String[] args) {
    BigDecimal b1 = new BigDecimal("4.0");
    BigDecimal b2 = new BigDecimal("4.00");
    if(b1.equals(b2)) System.out.println("equals");
    if(b1.compareTo(b2)==0) System.out.println("equals");
    }
    }就OK啦。
      

  2.   

    正如 wingtrace(暮寒.烟灰.风化物) 所说,4.0和4.00都被当作4来处理了,想要表达不同的精度必须通过字符串来处理
      

  3.   

    窃以为其实文档没有写错.One exception is java.math.BigDecimal, whose natural ordering equates BigDecimal objects with equal values and different precisions (such as 4.0 and 4.00).一个例外是 java.math.bigdecimal,它的自然顺序关系等同于有相同的值和不同的精度的bigdecimal对象.(俺英文不好,翻译不准确,希望有高手把它翻译一下..) 文档的意思是(对象)4.0和(对象)4.00有同等的值和不同的精度,也就是说值还是同等的.
      

  4.   

    java.math.BigDecimal 
    java.math.BigDecimal(double) 
    java.math.BigDecimal(java.lang.String) 
    java.math.BigDecimal(java.math.BigInteger) 
    java.math.BigDecimal(java.math.BigInteger, int)  new的时候最好先确定你要使用其中的哪个构造器噢
    这样才不至于把其中的参数写错
    估计不同的构造器可能会得出不同的结果噢
    楼主不妨深入研究一下咯
      

  5.   

    文档没有错啊class Test {
      double x = 4.0; //or 4.00
    }两个class编译出来是一模一样的,可见4.0, 4.00, 在编译阶段就是变成同样的东西了
      

  6.   


    frmChoose 你是设置为自动创建,但你删除了 对应的.H 和.CPP文件里相对应的全局变量 frmChoose。