我目前正在编写一个计算器应用程序。我知道 double 并不是良好数学的最佳选择。应用程序中的大多数函数都具有很高的精度,但有些函数不会得到非常难看的结果。我的解决方案是只向用户显示 12 位小数的精度。我选择 12 是因为我的最低精度来 self 的数值导出函数。
我遇到的问题是,如果我将其乘以定标器,然后四舍五入,然后除以定标器,则精度很可能会变得不正常。如果我使用 DecimalFormat,则无法仅显示 12 并正确显示代表科学记数法的 E,但如果不需要,则不会出现。
例如我想要
1.23456789111213 to be 1.234567891112
但从来没有
1.234567891112E0
但我也想要
1.23456789111213E23 to be 1.234567891112E23
所以基本上我想将数字字符串格式化为小数点后 12 位,保留科学记数法,但在不应该的时候不科学
最佳答案
使用String.format("%.12G", doubleVariable);
这就是如何使用 format() 以科学计数法显示值,但如果不需要,则不显示科学计数法。需要注意的是,“E”后面有一个“+”,因此您的结果将类似于 1.234567891112E+23
关于java - 在java中以一定精度显示 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5558870/