【发布时间】:2011-04-05 21:39:21
【问题描述】:
我目前正在编写一个计算器应用程序。我知道双倍并不是好的数学的最佳选择。应用程序中的大多数功能都具有很高的精度,但不会得到超级丑陋的结果。我的解决方案是只向用户显示 12 位小数的精度。我选择 12 是因为我的最低精度来自我的数值派生函数。
我遇到的问题是,如果我将它乘以定标器,然后舍入然后除以定标器,则精度很可能会失控。如果我使用 DecimalFormat,则无法仅显示 12 并正确显示科学记数法的 E,但如果不需要,则不会出现。
例如我想要
1.23456789111213 to be 1.234567891112
但从来没有
1.234567891112E0
但我也想要
1.23456789111213E23 to be 1.234567891112E23
所以基本上我想将数字字符串格式化为小数点后 12 位,保留科学记数法,但在不应该的时候不科学
【问题讨论】:
-
看看你在做什么?走捷径会导致努力工作!您知道 double 不是正确的选择,但是当您习惯了它时,您愿意尝试克服 double 的问题,事实上,您应该学习如何使用 BigDecimal(如建议的那样!)
标签: java numbers double precision