添加 Java
Addition in Java
正在调试一段代码,发现了这个奇怪的问题。
加上两个双精度变量 0.0040 和 0.0005,Java return 我得到的结果是“0.0045000000000000005”
这是我的一段代码:-
public static void main(String[] args) {
double a = 0.0040 ;
double b = 0.0005;
double result = a+b ;
System.out.println(result);
}
输出:0.0045000000000000005
如果我为变量 "a" 赋予 0.0041 到 0.0044 之间的值,则输出是正确的。但是,如果我将值赋给变量 "a" 作为 0.0045,它给出的输出为“0.004999999999999999”。
需要帮助!!
您可以使用 BigDecimal
在 Java 中进行精确的浮点运算。
这是一个例子:
BigDecimal a = new BigDecimal("0.0040");
BigDecimal b = new BigDecimal("0.0005");
BigDecimal sum = a.add(b);
另请注意,BigDecimal
和 BigInteger
(整数相同)是不可变的。
这是因为浮点数,它们会失去精度并导致您看到的问题。而是使用 BigDecimal 来获得精度
正在调试一段代码,发现了这个奇怪的问题。
加上两个双精度变量 0.0040 和 0.0005,Java return 我得到的结果是“0.0045000000000000005”
这是我的一段代码:-
public static void main(String[] args) {
double a = 0.0040 ;
double b = 0.0005;
double result = a+b ;
System.out.println(result);
}
输出:0.0045000000000000005
如果我为变量 "a" 赋予 0.0041 到 0.0044 之间的值,则输出是正确的。但是,如果我将值赋给变量 "a" 作为 0.0045,它给出的输出为“0.004999999999999999”。
需要帮助!!
您可以使用 BigDecimal
在 Java 中进行精确的浮点运算。
这是一个例子:
BigDecimal a = new BigDecimal("0.0040");
BigDecimal b = new BigDecimal("0.0005");
BigDecimal sum = a.add(b);
另请注意,BigDecimal
和 BigInteger
(整数相同)是不可变的。
这是因为浮点数,它们会失去精度并导致您看到的问题。而是使用 BigDecimal 来获得精度