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

问题描述 投票:0回答:3

大家好,

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

上面的代码打印 1.0 但我想存储整个值。 期望的输出是 1.000000000000000000000000000000001

我关心的是如何将这个值存储成双倍? 有什么办法可以增加 double 可以存储的小数位数吗? 请指导我

java double wrapper
3个回答
4
投票

你需要使用BigDecimal.

例子:

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

不能用

double
表示的原因是
double
有 64 位。


0
投票

http://en.wikipedia.org/wiki/Double-precision_floating-point_format

按照上面的链接double共有53个小数位64位,其中可以存储16位小数


0
投票

你可以有一个双倍,另一个,然后将主双倍乘以它本身的小数位数,然后将另一个双倍加到新数字上,除以所需的小数位数,然后打印出来

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

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

© www.soinside.com 2019 - 2024. All rights reserved.