java – 内置显示重要数字的方法

关于有重要数字的四舍五入有很多问题,答案提供了一种新的舍入方法,例如:

Rounding to an arbitrary number of significant digits

Round a double to 2 decimal places

这些问题和解决方案大多在2009〜2010年左右.

我想要一个简单的内置方法(或者来自Apache或Spring的标准知识库)给出数字和有效数字,打印出限制为指定有效数字的数字.

即:

> 123.456789 //至2个重要数字:120
> 123.456789 //至4个重要数字:123.4
> 123.456789 //至7个重要数字:123.4567

最佳答案 我发现这种使用String格式的好方法.

显然,用户可以使用字符串格式“g”或“G”指定最大有效位数. (
http://developer.android.com/reference/java/util/Formatter.html)

这是你只想打印出来的.

public String toSignificantFiguresString(BigDecimal bd, int significantFigures){
    return String.format("%."+significantFigures+"G", bd);
}

这是如果你想转换它:

public BigDecimal toSignificantFigures(BigDecimal bd, int significantFigures){
    String s = String.format("%."+significantFigures+"G", bd);
    BigDecimal result = new BigDecimal(s);
    return result;
}

这是一个实际的例子:

    BigDecimal bd = toSignificantFigures(BigDecimal.valueOf(12345678.123456789), 10);
    System.out.println("bd: " + String.format("%f",bd));

注意:我使用BigDecimal进行计算,因为double和float存在精度问题.)

点赞