Java中的加法

Java中的加法,java,math,Java,Math,正在调试一段代码,发现了这个奇怪的问题 在添加两个双变量0.0040和0.0005后,Java将返回结果“0.0045000000005” 以下是我的代码:- public static void main(String[] args) { double a = 0.0040 ; double b = 0.0005; double result = a+b ; System.out.println(result); } 输出:0.00450000000

正在调试一段代码,发现了这个奇怪的问题

在添加两个双变量0.0040和0.0005后,Java将返回结果“0.0045000000005”

以下是我的代码:-

    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.00499999999999”


需要帮助

您可以使用Java实现精确的浮点运算

以下是一个例子:

BigDecimal a = new BigDecimal("0.0040");
BigDecimal b = new BigDecimal("0.0005");
BigDecimal sum = a.add(b);

还要注意的是,
BigDecimal
biginger
(整数也一样)是不可变的。

这是因为浮点数,它们会失去精度,并导致您看到的问题。而是用于精度

需要的搜索!浮点数学!总是发生!相关-如果你环顾四周,你会发现堆栈溢出每天从像你这样不明白浮点数学不精确的人那里得到大约150亿个问题。这让我想知道为什么学校不在第一天就教授这个简单的概念。书中最古老的(或接近最古老的)一个…难道不可能使用double吗?你能用BigDecimalI给我举个同样的例子吗?我建议你看看另一个问题(顶部标记为重复的问题),因为它是一个更深入的答案。关于BigDecimal的例子,谷歌搜索“BigDecimal教程”会返回很多结果,这里有一个这样的网站:使用double不可能吗?你能用BigDecimal给我举个同样的例子吗