java 如何输出小数点后20位的Double?

eni9jsuy  于 2023-02-28  发布在  Java
关注(0)|答案(3)|浏览(198)

大家好,

Double d = 1.000000000000000000000000000000001;
        System.out.println(d);

上面的代码打印1.0,但我想d存储整个值。所需的输出是1.00000000000000000000000000000000001
我关心的是如何将这个值存储为double?有没有办法增加double可以存储的小数位数?请指导

bnl4lu3b

bnl4lu3b1#

您需要使用BigDecimal
示例:

BigDecimal test = new BigDecimal("1.000000000000000000000000000000001");
System.out.println(test);

不能使用double表示的原因是double具有64位。

jm81lzqq

jm81lzqq2#

http://en.wikipedia.org/wiki/Double-precision_floating-point_format
如上所述,双链有53个十进制位,共64位,可存储16位小数

2ul0zpep

2ul0zpep3#

你可以有一个双精度型,和另一个双精度型,把主双精度型乘以它本身的小数位数,然后把另一个双精度型加到新的数字上,再除以想要的小数位数,然后打印出来

Double b = 1.000000000000000
Double ab = 0.00001
System.out.println (b × 1000000000000000 + ab × 100000 ÷ 100000000000000000000)

我可能算错了,但这就是我的想法。

相关问题