大家好,
Double d = 1.000000000000000000000000000000001; System.out.println(d);
上面的代码打印1.0,但我想d存储整个值。所需的输出是1.00000000000000000000000000000000001我关心的是如何将这个值存储为double?有没有办法增加double可以存储的小数位数?请指导
bnl4lu3b1#
您需要使用BigDecimal。示例:
BigDecimal test = new BigDecimal("1.000000000000000000000000000000001"); System.out.println(test);
不能使用double表示的原因是double具有64位。
double
jm81lzqq2#
http://en.wikipedia.org/wiki/Double-precision_floating-point_format如上所述,双链有53个十进制位,共64位,可存储16位小数
2ul0zpep3#
你可以有一个双精度型,和另一个双精度型,把主双精度型乘以它本身的小数位数,然后把另一个双精度型加到新的数字上,再除以想要的小数位数,然后打印出来
Double b = 1.000000000000000 Double ab = 0.00001 System.out.println (b × 1000000000000000 + ab × 100000 ÷ 100000000000000000000)
我可能算错了,但这就是我的想法。
3条答案
按热度按时间bnl4lu3b1#
您需要使用BigDecimal。
示例:
不能使用
double
表示的原因是double
具有64位。jm81lzqq2#
http://en.wikipedia.org/wiki/Double-precision_floating-point_format
如上所述,双链有53个十进制位,共64位,可存储16位小数
2ul0zpep3#
你可以有一个双精度型,和另一个双精度型,把主双精度型乘以它本身的小数位数,然后把另一个双精度型加到新的数字上,再除以想要的小数位数,然后打印出来
我可能算错了,但这就是我的想法。