当谈到在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
你可以看到,我们不需要硬编码我们想要的小数点后有多少位数字,而是需要告诉我们在第一个数字之后想要多少位数字......(大致)
最佳答案
NumberFormat formatter = new DecimalFormat("#0.00");
0 的数量指定精度。 如果您希望将 0.0000054654654 格式化为 0.0000055,请使用: NumberFormat 格式化程序 = 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);
}
关于java - java中的逻辑十进制格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632821/