【发布时间】:2018-02-15 10:20:13
【问题描述】:
我尝试了很多方法来使用 String.format() 和 DecimalFormater 将 Double 转换为精确的十进制字符串,到目前为止我发现了这一点:
String s = "-.0000000000000017763568394002505";
Double d = Double.parseDouble(s) * 100;
System.out.println((new java.text.DecimalFormat("###########################.################################################################################")).format(d));
我不太喜欢我的解决方案,因为制作一个无法涵盖所有情况的巨大模式对我来说很难看。
你还有其他方法吗?
我真的想要所有小数,没有科学记数法,没有尾随零。
谢谢
P.S.:我需要这个没有外部库和 Java 1.7。
【问题讨论】:
-
您尝试过使用 BigDecimal 吗?
-
如果你想要exact十进制值,千万不要使用float或double类型。阅读Is floating point math broken?了解更多...
-
不!与损坏的浮点无关:这个问题在于从 Double 到 String 的转换......
-
要明确的是,您是要在存储到双精度后完全按原样打印双精度,还是要将双精度打印为精确的十进制表示无论输入是什么?到目前为止,人们似乎都认为你在问的是后者,但我猜你是在问前者,而两者的答案却截然不同。
标签: java string double decimal