Ant*_*rth 12 java math rounding floating-accuracy bigdecimal
我的Java程序以高精度计算为中心,需要精确到至少120个小数位.
因此,所有非整数都将由程序中的BigDecimals表示.
显然,我需要为BigDecimals指定舍入的准确性,以避免无限的十进制表达式等.
目前,我发现必须在BigDecimal的每个实例化或数学运算中指定精度是一个巨大的麻烦.
有没有办法为所有BigDecimal计算设置"全局准确度"?
(比如python中Context.prec()的Decimal模块)
谢谢
规格:
Java jre7 SE
Windows 7(32)
tru*_*ity 11
(差不多)原创
不是那么简单,但您可以创建一个MathContext并将其传递给所有BigDecimal构造函数和执行操作的方法.
修订
或者,您可以BigDecimal通过提供权限MathContext并使用以下的舍入版本来扩展和覆盖您要使用的任何操作divide:
public class MyBigDecimal extends BigDecimal {
private static MathContext context = new MathContext(120, RoundingMode.HALF_UP);
public MyBigDecimal(String s) {
super(s, context);
}
public MyBigDecimal(BigDecimal bd) {
this(bd.toString()); // (Calls other constructor)
}
...
public MyBigDecimal divide( BigDecimal divisor ){
return new MyBigDecimal( super.divide( divisor, context ) );
}
public MyBigDecimal add( BigDecimal augend ){
return new MyBigDecimal( super.add( augend ) );
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13707 次 |
| 最近记录: |