java提高篇(三)_四舍五入 转自 http://cmsblogs.com


美国银行家银行家舍入法

舍去位的数值小于5时,直接舍去。

舍去位的数值大于5时,进位后舍去。

当舍去位的数值等于5时,若5后面还有其他非0数值,则进位后舍去,若5后面是0时,则根据5前一位数的奇偶性来判断,奇数进位,偶数舍去。

举例:

11.556 = 11.56 ------六入

11.554 = 11.55 -----四舍

11.5551 = 11.56 -----五后有数进位

11.545 = 11.54 -----五后无数,若前位为偶数应舍去

11.555 = 11.56 -----五后无数,若前位为奇数应进位

JAVA 支持的7种舍入法

在上面简单地介绍了银行家舍入法,目前java支持7中舍入法:

1、 ROUND_UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非0即进位。

2、 ROUND_DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。

3、 ROUND_CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于ROUND_UP,若为负数,舍入行为类似于ROUND_DOWN。Math.round()方法就是使用的此模式。

4、 ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于ROUND_DOWN;若为负数,舍入行为类似于ROUND_UP。

5、 HALF_UP:最近数字舍入(5进)。这是我们最经典的四舍五入。

6、 HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃的。

7、 HAIL_EVEN:银行家舍入法。


提到四舍五入那么保留位就必不可少了,在java运算中我们可以使用多种方式来实现保留位。

保留位

方法一:四舍五入

double   f   =   111231.5585;
BigDecimal   b   =   new   BigDecimal(f);
double   f1   =   b.setScale(2,   RoundingMode.HALF_UP).doubleValue();

在这里使用BigDecimal ,并且采用setScale方法来设置精确度,同时使用RoundingMode.HALF_UP表示使用最近数字舍入法则来近似计算。在这里我们可以看出BigDecimal和四舍五入是绝妙的搭配。

方式二:

java.text.DecimalFormat   df   =new   java.text.DecimalFormat(”#.00″);
df.format(你要格式化的数字);

例:new java.text.DecimalFormat(”#.00″).format(3.1415926)

#.00 表示两位小数 #.0000四位小数 以此类推…

方式三:

double d = 3.1415926;

String result = String .format(”%.2f”);

%.2f %. 表示 小数点前任意位数   2 表示两位小数 格式后的结果为f 表示浮点型。

方式四:

此外如果使用struts标签做输出的话,有个format属性,设置为format="0.00"就是保留两位小数

例如:

<bean:write name="entity" property="dkhAFSumPl"  format="0.00" />

或者

<fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>

maxFractionDigits表示保留的位数

优质内容筛选与推荐>>
1、欧拉图
2、知道这20个正则表达式,能让你少写1,000行代码
3、2019 ICPC Asia Nanjing Regional K. Triangle
4、JavaScript
5、保证你现在和未来不失业的十种关键技术(转载)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn