gpt4 book ai didi

java - BigDecimal 方法返回模糊的结果,为什么会这样?

转载 作者:行者123 更新时间:2023-11-30 06:12:53 24 4
gpt4 key购买 nike

代码:

package tk.vivekpatani.www;

import java.math.BigDecimal;
import java.util.Scanner;

public class SimpleCalc {

public static void main(String[] args) {


// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
try{
System.out.println("Welcome to the Calculator!");


System.out.println("Enter Number 1:");
double num1 = sc.nextDouble();

System.out.println("Enter Number 2:");
double num2 = sc.nextDouble();

BigDecimal bd1 = new BigDecimal(num1);
BigDecimal bd2 = new BigDecimal(num2);

BigDecimal result = addition(bd1,bd2);

System.out.println("Result:"+result.toString());
}
finally{
sc.close();
}

}
static BigDecimal addition(BigDecimal input1, BigDecimal input2){

BigDecimal result = input1.add(input2);
return result;

}


}

结果:

Welcome to the Calculator!
Enter Number 1:
90
Enter Number 2:
10.2
Result:100.199999999999999289457264239899814128875732421875

我正在使用 Eclipse IDE Mars 和 Java 1.8。

最佳答案

double 由于其使用的精度而无法正确处理 0.2

尝试这样做来创建数字,您需要使用字符串构造 BigDecimal,这样您就不会遗留 double 精度问题。

    System.out.println("Enter Number 1:");
String num1 = sc.nextLine();
BigDecimal bd1 = new BigDecimal(num1);

System.out.println("Enter Number 2:");
String num2 = sc.nextLine();
BigDecimal bd2 = new BigDecimal(num2);

关于java - BigDecimal 方法返回模糊的结果,为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com