我正在尝试对一个大的 double (大于整数允许的值)进行舍入,以便它将在没有小数位的情况下打印到 E13 次幂,但我不知道如何进行。
我研究了 DecimalFormat 以及强制转换和字符串方法来修复它,但对于大于 int 的数字没有答案。
import java.util.*;
import java.text.*;
class Different {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,#########");
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
double a = in.nextDouble();
double b = in.nextDouble();
double answer = (Math.abs(a - b));
df.format(answer);
System.out.println(answer);
}
in.close();
}
}
我想要打印
2 71293781685339 12345677654320
但是得到
2.0 7.1293781685339E13 1.234567765432E13
最佳答案
检查 Java API
中的 System.out.printf()
。具体描述在
PrintStream 类
double val = 123.4567765432092;
System.out.printf("%3.14f%n", val);
请记住, double 值只有 53 位精度
,包括整数部分和尾数。这相当于大约 16
位数字。除此之外,您将需要使用 BigDecimal
。
关于java - 如何从大 double 中删除小数位并让它们打印为数字而不是 2.13837537957E14?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138420/