您的当前位置:首页正文

bigdecimal算法学习总结

2021-03-06 来源:易榕旅网


分析: 在DecimalFormat API中有这样一段: 舍入 DecimalFormat提供RoundingMode中定义的舍入模式进行格式化。默认情况下,它使用RoundingMode.HALF_EVEN。 这句话指出了舍入模式有多种类型,而DecimalFormat默认采用了RoundingMode.HALF_EVEN这种类型,接下来,我们就一起看看,到底存在哪些舍入类型吧 RoundingMode介绍: RoundingMode是一个枚举类,有一下几个常量:UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY UP public static final RoundingModeUP 远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1。注意,此舍入模式始终不会减少计算值的绝对值。

示例: 输入数字 使用UP舍入模式 将输入数字舍入为一位数 5.5 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 6 3 2 2 1 -1 -2 -2 -2.5 -5.5 -3 -6 DOWN

public static final RoundingModeDOWN

向零方向舍入的舍入模式。从不对舍弃部分前面的数字加 1(即截尾)。注意,此舍入模式始终不会增加计算值的绝对值。

示例: 输入数字 使用DOWN舍入模式 将输入数字舍入为一位数 5.5 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 5 2 1 1 1 -1 -1 -1 -2 -5 CEILING

public static final RoundingModeCEILING

向正无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于

RoundingMode.UP;如果结果为负,则舍入行为类似于RoundingMode.DOWN。注意,

此舍入模式始终不会减少计算值。

示例: 输入数字 使用CEILING舍入模式 将输入数字舍入为一位数 5.5 6 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 3 2 2 1 -1 -1 -1 -2 -5 FLOOR

public static final RoundingModeFLOOR

向负无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于

RoundingMode.DOWN;如果结果为负,则舍入行为类似于RoundingMode.UP。注意,

此舍入模式始终不会增加计算值。

示例: 输入数字 使用FLOOR舍入模式 将输入数字舍入为一位数 5.5 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 5 2 1 1 1 -1 -2 -2 -3 -6 HALF_UP

public static final RoundingModeHALF_UP

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。如果被舍弃部分>= 0.5,则舍入行为同RoundingMode.UP;否则舍入行为同

RoundingMode.DOWN。注意,此舍入模式就是通常学校里讲的四舍五入。

示例: 输入数字 使用HALF_UP舍入模式 将输入数字舍入为一位数 5.5 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 6 3 2 1 1 -1 -1 -2 -3 -6 HALF_DOWN

public static final RoundingModeHALF_DOWN

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。如果被舍弃部分> 0.5,则舍入行为同RoundingMode.UP;否则舍入行为同

RoundingMode.DOWN。

示例: 输入数字 使用HALF_DOWN舍入模式 将输入数字舍入为一位数 5.5 2.5 1.6 5 2 2 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 1 1 -1 -1 -2 -2 -5 HALF_EVEN

public static final RoundingModeHALF_EVEN

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为同

RoundingMode.HALF_UP;如果为偶数,则舍入行为同RoundingMode.HALF_DOWN。

注意,在重复进行一系列计算时,此舍入模式可以在统计上将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。此舍入模式类似于 Java 中对

float和double算法使用的舍入策略。

示例: 输入数字 使用HALF_EVEN舍入模式 将输入数字舍入为一位数 5.5 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 6 2 2 1 1 -1 -1 -2 -2 -6 UNNECESSARY

public static final RoundingModeUNNECESSARY

用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。如果对生成精确结果的操作指定此舍入模式,则抛出ArithmeticException。

示例: 输入数字 使用UNNECESSARY舍入模式 将输入数字舍入为一位数 5.5 抛出ArithmeticException 2.5 抛出ArithmeticException 1.6 抛出ArithmeticException 1.1 抛出ArithmeticException 1.0 -1.0 1 -1 -1.1 抛出ArithmeticException -1.6 抛出ArithmeticException -2.5 抛出ArithmeticException -5.5 抛出ArithmeticException

因篇幅问题不能全部显示,请点此查看更多更全内容