格式化双精度到 6 位小数精度
Posted
技术标签:
【中文标题】格式化双精度到 6 位小数精度【英文标题】:Format a double to 6 decimal places precision 【发布时间】:2018-11-27 09:07:00 【问题描述】:我想将双精度值格式化为 6 位精度而不进行四舍五入。
格式化后的预期值到小数点后 6 位
20790123833965.960938
我尝试过使用十进制格式
DecimalFormat formatter = new DecimalFormat("#0.000000");
System.out.println(formatter.format(hashValue) );
我得到了这个
20790123833965.960000
【问题讨论】:
结果是合理的,一个double
只能提供15到16位小数的精度。
输入是什么?
相关:How to determine the max precision for double
为了获得更高的精度,请使用BigDecimal
:BigDecimal hashValue = new BigDecimal("20790123833965.960938123");
然后它将产生预期的输出。
任何答案有帮助吗?如果没有,请告诉你你还缺少什么,我们仍然在这里提供帮助。如果是,请记住接受最有帮助的一个。谢谢。
【参考方案1】:
正如@Benoit 已经在评论中所说,为了保持您的号码的完整精度,您需要一个BigDecimal
:
BigDecimal hashValue = new BigDecimal("20790123833965.960938");
DecimalFormat formatter = new DecimalFormat("#0.000000");
System.out.println(formatter.format(hashValue));
输出:
20790123833965.960938
【讨论】:
【参考方案2】:使用此代码,它将起作用。
public class JavaFormatter
public static void main(String args[])
BigDecimal hashValue = new BigDecimal("20790123833965.960938");
DecimalFormat formatter = new DecimalFormat("#.######");
System.out.println(formatter.format(hashValue));
【讨论】:
以上是关于格式化双精度到 6 位小数精度的主要内容,如果未能解决你的问题,请参考以下文章