java中的逻辑十进制格式

时间:2015-02-20 15:42:38

标签: java formatting decimal-point

当谈到在java中格式化小数时,有一种我知道的方法

NumberFormat formatter = new DecimalFormat("#0.00");  

但是如果你有像

这样的值,那就不行了
0.0000054654654 or similar

在这种情况下你只会得到

0.00

虽然从逻辑上说它会打印出来

0.0000054 (or maybe 0.0000055)

我想知道是否已有解决方案?或者我必须实现自定义格式化程序?

可能存在的例子

1.1 - > 1.100 0.00000011111 - > 0.000000111

你可以看到我们需要在第一个数字之后告诉我们想要多少位数而不是硬编码我们想要的小数点后面的位数......(大致)

1 个答案:

答案 0 :(得分:0)

NumberFormat formatter = new DecimalFormat("#0.00");  

0的数量指定精度。 如果要将0.0000054654654格式化为0.0000055,请使用:     NumberFormat formatter = new DecimalFormat(“#0.000000”);

如果预先知道所需的精度,可以使用以下方法:

public static void main(String[] args) {
    double a = 0.0000054654654;
    BigDecimal bd = new BigDecimal(a);
    String answer = String.format("%."+3+"G", bd);
    System.out.println(answer);
}