关于有重要数字的四舍五入有很多问题,答案提供了一种新的舍入方法,例如:
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存在精度问题.)