Java中保留小数位数

注意:保留小数位数用用到BigDecimal类型做转换,所以要有这行引入jar包的程序:

import java.math.BigDecimal;

1. 四舍五入保留两位小数:

double a = 123.0232363869654697132695;
a = new BigDecimal(doubleValue).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

2. 各种保留小数点的方式:

只需设置setScale(int newScale, RoundingMode roundingMode)
的RoundingMode 参数即可:

RoundingMode value
CEILING 向正无限大方向舍入的舍入模式。
DOWN 向零方向舍入的舍入模式。
FLOOR 向负无限大方向舍入的舍入模式。
HALF_DOWN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
HALF_EVEN 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 (就是四舍五入
UNNECESSARY 用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
UP 远离零方向舍入的舍入模式。
double doubleValue = -2.222;
String s = doubleValue+"";

//四舍五入     >=0.##5  进位     例如:  2.222 -> 2.22      2.225 -> 2.23                         -2.225 -> -2.23
doubleValue = new BigDecimal(s).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(doubleValue);

//     >0.##5  进位        例如: 2.222 -> 2.22        2.225 -> 2.22   2.226 -> 2.23       -2.225 -> -2.22
doubleValue = new BigDecimal(s).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
System.out.println(doubleValue);


//   正数进位,负数舍去 (趋向正无穷)              例如:  2.222 -> 2.23        2.225 -> 2.23                        -2.225 -> -2.22
doubleValue = new BigDecimal(s).setScale(2, BigDecimal.ROUND_CEILING).doubleValue();
System.out.println(doubleValue);

//   正数舍去,负数进位  (趋向负无穷)            例如:   2.222 -> 2.22        2.225 -> 2.22                         -2.225 -> -2.23
doubleValue = new BigDecimal(s).setScale(2, BigDecimal.ROUND_FLOOR).doubleValue();
System.out.println(doubleValue);

//直接进位(远离0)     例如:2.222 -> 2.23       2.225 -> 2.23                             -2.225 -> -2.23
doubleValue = new BigDecimal(s).setScale(2, BigDecimal.ROUND_UP).doubleValue();
System.out.println(doubleValue);

//直接舍去(趋向0)     例如:2.222 -> 2.23       2.225 -> 2.22                             -2.225 -> -2.22
doubleValue = new BigDecimal(s).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
System.out.println(doubleValue);

猜你喜欢

转载自blog.csdn.net/qq_39559604/article/details/81974764