示例输入:
double a = 31.3131313131313131313131313131313131131313131313131313131313131;
String value1 = String.format("N= %1$39.32f", a);
System.out.println(value1);
示例输出: N = 31.3131313131310000000000000 ......
为什么我的程序会在有值要求时自动填充?我如何控制它,因为我希望调用这些值。
谢谢
答案 0 :(得分:2)
这是双精度问题,请看一下:
public static void main(String[] args) {
double a = 31.3131313131313131313131313131313131131313131313131313131313131;
System.out.println(Double.toString(a));
}
输出:
31.31313131313131
java double
数据类型无法保持这么高的精度。请改用BigDecimal
。
public static void main(String[] args) {
BigDecimal a = new BigDecimal("31.3131313131313131313131313131313131131313131313131313131313131");
System.out.println(a.toPlainString());
}
输出:
31.3131313131313131313131313131313131131313131313131313131313131
答案 1 :(得分:0)
因为double
只能表示53位的精度,大约是精度的16位十进制数。因此,您的变量a
只是使用与您请求的值最接近的可表示值进行初始化。
如果您确实需要此级别的精确度,则应考虑使用BigDecimal
。