21 java
是否有Java库函数可用于将数字截断为任意数量的小数位?例如.
SomeLibrary.truncate(1.575, 2) = 1.57
Run Code Online (Sandbox Code Playgroud)
谢谢
rao*_*son 28
尝试使用BigDecimal的 setScale :
public static double round(double d, int decimalPlace) {
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
Run Code Online (Sandbox Code Playgroud)
Esk*_*sko 14
令人难以置信的是,没有人提出这个问题,Java API 现在已经有了很多年的DecimalFormat用于这个目的.
公共数学中有一个.查看http://commons.apache.org/math/apidocs/org/apache/commons/math/util/MathUtils.html:
public static double round(double x,
int scale)
Run Code Online (Sandbox Code Playgroud)
它是使用BigDecimal实现的,并且被重载以允许指定舍入方法,因此您可以使用它来截断,如下所示:
org.apache.commons.math.util.MathUtils.round(1.575, 2,
java.math.BigDecimal.ROUND_DOWN);
Run Code Online (Sandbox Code Playgroud)
更新:
在最后一个版本(Math3)中,此方法在类中Precision.
org.apache.commons.math3.util.Precision.round(double x, int scale, int roundingMethod)
只需删除小数部分:
public double trunk(double value){
return value - value % 1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54457 次 |
| 最近记录: |