如何在Java中将双精度数转换为不带符号且具有很高准确性的字符串?

提问

我正在尝试将双精度型转换为不带符号的字符串,并尝试了以下方法:

f= Double.valueOf(c.getString(c.getColumnIndex(NotesDbAdapter.KEY_VALUE)));  
NumberFormat formatter = new DecimalFormat("###.##############");  

但是,7 ^ 3 ^ 7的值返回为:558546000000000000相对于558545864083284007.一如既往的帮助将不胜感激.

最佳答案

>您已经具有字符串形式的值.为什么要将其转换为两倍?
>您无法从无法容纳的两倍中获得精度. 558545864083284007具有18个十进制数字.双精度数具有53位二进制精度,大约是15.9个十进制数字. Google提出“每位计算机科学家都应了解的浮点知识”.
> ###.###############不适用于558545864083284007.