如何在java中使用BigDecimal .equal()?

dy2hfwbg  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(155)
import java.math.BigDecimal;

public class test {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal("0.1");
        BigDecimal b2 = new BigDecimal("0.2");
        System.out.println(b1.multiply(b2));  // the result is 0.02 
        System.out.println(b1.multiply(b2).equals("0.02")); // boolean is false
        System.out.println(b1.add(b2)); //the result is 0.3
        System.out.println(b1.add(b2).equals("0.3")); // boolean is false
    }
};

我不知道为什么.equals的结果总是假的?谢谢你的回答。

wwwo4jvm

wwwo4jvm1#

您正在比较BigDecimalString
代替

b1.add(b2).equals("0.3")

您应该使用

b1.add(b2).equals(new BigDecimal("0.3"))
5kgi1eie

5kgi1eie2#

您正在尝试将BigDecimal与字符串进行比较。
b1.乘(b2).等于(“0.02”)
此语句将比较String“0.02”和BigDecimal,由于两种数据类型不同,因此返回false。
创建一个值为“0.02”的BigDecimal新对象,并将其作为参数传递。

BigDecimal b1 = new BigDecimal("0.1");
    BigDecimal b2 = new BigDecimal("0.2");
    System.out.println(b1.multiply(b2));  // the result is 0.02
    System.out.println(b1.multiply(b2).equals(new BigDecimal("0.02"))); // boolean is true as two same datatype objects are compared and both are equal.
    System.out.println(b1.add(b2)); //the result is 0.3
    System.out.println(b1.add(b2).equals("0.3")); // boolean is false because you are trying to compare a string and BigDecimal

相关问题