web接口中BigDecimal值比較不相等

BigDecimal oldPrice=new BigDecimal(50);
        BigDecimal newPrice=new BigDecimal(50.00);

        out.println("直接比較"+oldPrice.equals(newPrice));
        out.println("直接比較"+newPrice.equals(oldPrice));
        out.println("比較float值:"+(oldPrice.floatValue()==newPrice.floatValue()));
        out.println("比較double值:"+(oldPrice.doubleValue()==newPrice.doubleValue()));

        BigDecimal oldPrice1=new BigDecimal("50.1");
        BigDecimal newPrice1=new BigDecimal("50.10");

        out.println("直接比較"+oldPrice1.equals(newPrice1));
        out.println("直接比較"+newPrice1.equals(oldPrice1));
        out.println("比較float值:"+(oldPrice1.floatValue()==newPrice1.floatValue()));
        out.println("比較double值:"+(oldPrice1.doubleValue()==newPrice1.doubleValue()));

輸出結果code

直接比較true
直接比較true
比較float值:true
比較double值:true
直接比較false
直接比較false
比較float值:true
比較double值:true

當從後臺接受BigDecimal是從string字符串轉成的,因此會保留小數點.若是原價是3.90,新價是3.9,則認爲它兩不相等.ci

相關文章
相關標籤/搜索