我遇到了大值的问题。 请帮助我。
Scanner scanner=new Scanner(System.in);
double rate=1.0000;
double value=scanner.nextDouble();
value*=rate;
BigDecimal bigDecimal=new BigDecimal(value);
System.out.println(bigDecimal);
但是当我输入时
121212121212121212121212121212121212121212121212
我的输出是
121212121212121209445819616146456785067331026944
请帮助我。 如何准确获取数值?
最佳答案
如果您使用精度有限的 double
来初始化 BigDecimal,则使用 BigDecimal 是没有意义的。
您应该使用字符串来初始化它:
Scanner scanner=new Scanner(System.in);
String value=scanner.nextLine();
BigDecimal bigDecimal=new BigDecimal(value);
System.out.println(bigDecimal);
如果您希望将输入乘以 1 以外的值(乘以 1 毫无意义),请使用 bigDecimal.multiply(...)
。
关于java - 大值会导致准确性损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901885/