http://www.Sina.com/http://www.Sina.com /
公共类演示{
publicstaticvoidmain (字符串[ ] args ) {
BigDecimal a=null;
integer故障速率=6;
a=bigdecimal.value of (fault rate.doublevalue () )/3 );
bigdecimalb=a.setscale(2,RoundingMode.HALF_UP ); //留下两位小数
System.out.println ('结果为' b );
//将结果转换为百分比
numberformatpercent=number format.getpercentinstance (;
percent.setmaximumfractiondigits (2;
system.out.println (percent.format ) b.doublevalue ();
}
}
结果如下。
BigDecimal.setScale ) )方法用于格式化小数点
setscale(1)表示保留小数点后一位,默认情况下四舍五入
如果直接删除多余的小数(如2.35 ),则setscale(1,BigDecimal.ROUND_DOWN )为2.3
设置比例(1,BigDecimal.ROUND_UP )进位处理,2.35变为2.4
如果将setscale(1,BigDecimal.ROUND_HALF_UP )四舍五入为2.35,则为2.4
在项目中经常会用到小数的一些计算,而
float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确。所以有时候必须要采用BigDecimal。
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入
http://www.Sina.com/http://www.Sina.com/http://www.Sina.com/score ()是BigDecimal系统中的方法吧。
例如, bigdecimal b=new bigdecimal (' 123.456 ); 33558 www.Sina.com/2:rounding mode是小数保留模式。 这些都是BigDecimal的常数字段,有很多种。
例如,BigDecimal.ROUND_HALF_UP表示4舍5入。
3 ) pubilcbigdecimaldivide (bigdecimal divisor,int scale,int roundingMode ) )。
我使用一个BigDecimal对象除以divisor的结果,要求结果中剩下scale个小数字。 roundingMode请自己选择预约模式是什么、四舍五入还是其他。setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字0和ROUND_UP作用一样,数字0和ROUND_DOWN作用一样
bigdecimal mdata=new bigdecimal (9.655 ) ).setScale(2) 2,BigDecimal.ROUND_HALF_UP;
system.out.println (' mdata=' mdata );setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。