如何在Java中进行智能小数截断?

时间:2010-11-22 18:54:14

标签: java formatting numbers

我想实现或使用一些库来实现智能小数截断。

我的意思是我想得到:从3.456432 - > 3.4,来自0.0000023232432 - > 0.000002和0.000000000001 - > 0.0(或类似的东西)。我需要这个功能来方便用户GUI。

因此我需要减少不等于零的位数。我需要保留1-3个最高有效数字,其他设置为零。

3 个答案:

答案 0 :(得分:3)

您是否看过DecimalFormat API?

  

DecimalFormat是一个具体的子类   NumberFormat格式为十进制的   数字。它有各种功能   旨在使解析成为可能   和格式化任何语言环境中的数字,   包括对西方,阿拉伯语的支持,   和印度数字。它也支持   不同种类的数字,包括   整数(123),定点数   (123.4),科学记数法(1.23E4),   百分比(12%)和货币   金额(123美元)。所有这些都可以   本地化。

答案 1 :(得分:2)

如果有任何帮助,您可以使用以下方法将double舍入到指定的有效位数。但是,标准API中没有以合理的方式输出结果的功能:

private static double round(double v, int sigDigits) {
    double f = Math.pow(10, Math.ceil(Math.log10(Math.abs(v))) - sigDigits);
    return Math.round(v/f)*f;
}

答案 2 :(得分:1)

从Java 5开始,java.util有一个Formatter类,它可以满足你的需要。