格式化在Java中如何将double转换为无符号且具有高精度的字符串?
我正在尝试将double转换为不带符号的字符串,并尝试了以下操作:
f= Double.valueOf(c.getString(c.getColumnIndex(NotesDbAdapter.KEY_VALUE)));
NumberFormat formatter = new DecimalFormat("###.##############");
但是,7^3^7的值返回为:5585460000000,而不是55854586408328407。如能一如既往地给予帮助,我们将不胜感激
# 1 楼答案
如果您已经有了字符串格式的巨大十进制数,请尝试使用
BigDecimal
类,如下所示:您应该在不损失精度的情况下恢复原始值:
# 2 楼答案
您已经将该值设置为字符串。为什么要把它转换成双倍呢
你无法从一个无法承受的双精度中获得精确性
558545864083284007
有18个十进制数字。Adouble
有53位二进制精度,约为15.9位十进制数字。谷歌搜索“每个计算机科学家都应该知道的浮点运算”###.##############
不是适用于558545864083284007
的格式掩码