向正无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于
RoundingMode.UP
;如果结果为负,则舍入行为类似于
RoundingMode.DOWN
。注意,此舍入模式始终不会减少计算值。
输入数字
|
使用
CEILING
舍入模式
将输入数字舍入为一位数
|
5.5
|
6
|
2.5
|
3
|
1.6
|
2
|
1.1
|
2
|
1.0
|
1
|
-1.0
|
-1
|
-1.1
|
-1
|
-1.6
|
-1
|
-2.5
|
-2
|
-5.5
|
-5
|
向负无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于
RoundingMode.DOWN
;如果结果为负,则舍入行为类似于
RoundingMode.UP
。注意,此舍入模式始终不会增加计算值。
输入数字
|
使用
FLOOR
舍入模式
将输入数字舍入为一位数
|
5.5
|
5
|
2.5
|
2
|
1.6
|
1
|
1.1
|
1
|
1.0
|
1
|
-1.0
|
-1
|
-1.1
|
-2
|
-1.6
|
-2
|
-2.5
|
-3
|
-5.5
|
-6
|
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。如果被舍弃部分 >= 0.5,则舍入行为同
RoundingMode.UP
;否则舍入行为同
RoundingMode.DOWN
。注意,此舍入模式就是通常学校里讲的四舍五入。
输入数字
|
使用
HALF_UP
舍入模式
将输入数字舍入为一位数
|
5.5
|
6
|
2.5
|
3
|
1.6
|
2
|
1.1
|
1
|
1.0
|
1
|
-1.0
|
-1
|
-1.1
|
-1
|
-1.6
|
-2
|
-2.5
|
-3
|
-5.5
|
-6
|
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。如果被舍弃部分 > 0.5,则舍入行为同
RoundingMode.UP
;否则舍入行为同
RoundingMode.DOWN
。
输入数字
|
使用
HALF_DOWN
舍入模式
将输入数字舍入为一位数
|
5.5
|
5
|
2.5
|
2
|
1.6
|
2
|
1.1
|
1
|
1.0
|
1
|
-1.0
|
-1
|
-1.1
|
-1
|
-1.6
|
-2
|
-2.5
|
-2
|
-5.5
|
-5
|
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为同
RoundingMode.HALF_UP
;如果为偶数,则舍入行为同
RoundingMode.HALF_DOWN
。注意,在重复进行一系列计算时,此舍入模式可以在统计上将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。此舍入模式类似于 Java 中对
float
和
double
算法使用的舍入策略。
输入数字
|
使用
HALF_EVEN
舍入模式
将输入数字舍入为一位数
|
5.5
|
6
|
2.5
|
2
|
1.6
|
2
|
1.1
|
1
|
1.0
|
1
|
-1.0
|
-1
|
-1.1
|
-1
|
-1.6
|
-2
|
-2.5
|
-2
|
-5.5
|
-6
|
转自 http://blog.csdn.net/alanzyy/article/details/8465098RoundingMode介绍:RoundingMode是一个枚举类,有一下几个常量:UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY UPpublic static
在使用算数运算的时候,我们经常会涉及到取舍问题,下面介绍一下
Rounding
Mode
对应的各种取舍方法
一:
Rounding
Mode
.
HALF
_UP 这是我们最熟悉的
四舍五入
String a="100";
String b="3";
String c="6";
BigDecimal
bigDecimal
_a=new BigDeci...
进位制:不管保留数字后面是大是小 (0 除外) 都会进 1。结果会向原点的反方向对齐,正数向正无穷方向对齐,负数向负无穷方向对齐。
BigDecimal
a = new
BigDecimal
("0.098").setScale(2,
BigDecimal
.ROUND_UP); // 0.10
BigDecimal
b = new
BigDecimal
("0.0
java.math.
Rounding
Mode
里面有几个参数搞得我有点晕,现以个人理解对其一一进行总结:
为了能更好理解,我们可以画一个XY轴
Rounding
Mode
.CEILING:取右边最近的整数
Rounding
Mode
.DOWN:去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点
DecimalFormat df= new DecimalFormat("#.##");
df.set
Rounding
Mode
(
Rounding
Mode
.
HALF
_UP);
但是,这种方式存在一个问题,就是当小数位数第二数是奇数的时候,
四舍五入
就失效了。
Rounding
Mode
.CEILING:取右边最近的整数
Rounding
Mode
.DOWN:去掉小数部分取整.
Java中的
BigDecimal
类提供了多种
四舍五入
的方法,可以根据需要
选择
不同的方法。其中,setScale()方法是最常用的方法,可以设置保留小数位数和舍入模式。例如:
BigDecimal
bd = new
BigDecimal
("3.1415926");
bd = bd.setScale(2,
Rounding
Mode
.
HALF
_UP);
System.out.println(bd);
这段代码将bd保留两位小数,并使用
四舍五入
模式进行舍入。输出结果为3.14。其中,
Rounding
Mode
.
HALF
_UP表示
四舍五入
模式,还有其他舍入模式可供
选择
,如
Rounding
Mode
.UP表示向上舍入,
Rounding
Mode
.DOWN表示向下舍入等。