0

示例输入:

double a = 31.3131313131313131313131313131313131131313131313131313131313131;
String value1 = String.format("N= %1$39.32f", a);
System.out.println(value1);

示例输出:N= 31.3131313131310000000000000...

为什么我的程序会在需要值时自动填充?我如何控制它,因为我希望调用这些值。

谢谢

4

2 回答 2

2

这是双重精度的问题,看看这个:

public static void main(String[] args) {
    double a = 31.3131313131313131313131313131313131131313131313131313131313131;
    System.out.println(Double.toString(a));
}

输出:

31.31313131313131

javadouble数据类型不能保持这么高的精度。改用 a BigDecimal

public static void main(String[] args) {
    BigDecimal a = new BigDecimal("31.3131313131313131313131313131313131131313131313131313131313131");
    System.out.println(a.toPlainString());
}

输出:

31.3131313131313131313131313131313131131313131313131313131313131
于 2013-03-10T13:12:37.013 回答
0

因为 adouble只能表示 53 位精度,也就是大约 16 位十进制精度。因此,您的变量a只需使用与您请求的值最接近的可表示值进行初始化。

如果您真的需要这种级别的精度,您应该考虑使用BigDecimal.

于 2013-03-10T13:09:44.560 回答