Java小事非小事!!!!!!!!!!!!
&&&&& 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了。在讲解之间我们先看如下一个经典的案例:
public static void main(String[] args) {
System.out.println("12.5的四舍五入值:" + Math.round(12.5));
System.out.println("-12.5的四舍五入值:" + Math.round(-12.5));
12.5的四舍五入值:13
-12.5的四舍五入值:-12
&&&&& 这是四舍五入的经典案例,也是我们参加校招时候经常会遇到的(貌似我参加笔试的时候遇到过好多次)。从这儿结果中我们发现这两个绝对值相同的数字,为何近似值会不同呢?其实这与Math.round采用的四舍五入规则来决定。
&&&&& 四舍五入其实在金融方面运用的非常多,尤其是银行的利息。我们都知道银行的盈利渠道主要是利息差,它从储户手里收集资金,然后放贷出去,期间产生的利息差就是银行所获得的利润。如果我们采用平常四舍五入的规则话,这里采用每10笔存款利息计算作为模型,如下:
&&&&& 四舍:0.000、0.001、0.002、0.003、0.004。这些舍的都是银行赚的钱。
&&&&& 五入:0.005、0.006、0.007、0.008、0.009。这些入的都是银行亏的钱,分别为:0.005、0.004、.003、0.002、0.001。
&&&&& 所以对于银行来说它的盈利应该是0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005。从结果中可以看出每10笔的利息银行可能就会损失0.005元,千万别小看这个数字,这对于银行来说就是一笔非常大的损失。面对这个问题就产生了如下的银行家涉入法了。该算法是由美国银行家提出了,主要用于修正采用上面四舍五入规则而产生的误差。如下:
&&&&& 舍去位的数值小于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&&&&&&&&& -----五后无数,若前位为奇数应进位
&&&&& 下面实例是使用银行家舍入法:
public static void main(String[] args) {
BigDecimal d = new BigDecimal(100000);
BigDecimal r = new BigDecimal(0.);
BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);
//使用银行家算法
System.out.println("季利息是:"+i);
季利息是:562.50
&&&&& 在上面简单地介绍了银行家舍入法,目前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运算中我们可以使用多种方式来实现保留位。
&&& 方法一:四舍五入
BigDecimal
BigDecimal(f);
b.setScale(2,
RoundingMode.HALF_UP).doubleValue();
&&&&&& 在这里使用BigDecimal ,并且采用setScale方法来设置精确度,同时使用RoundingMode.HALF_UP表示使用最近数字舍入法则来近似计算。在这里我们可以看出BigDecimal和四舍五入是绝妙的搭配。
&&&& 方式二:
java.text.DecimalFormat
java.text.DecimalFormat(.00&P);
df.format(你要格式化的数字);
&& 例:new java.text.DecimalFormat(.00&P).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="${}" maxFractionDigits="0"/&
maxFractionDigits表示保留的位数
不积跬步,无以至千里
不积小流,无以成江海。
&&&&&&&&&&&&&&&&&&&&&&&& &&荀子《劝学篇》
阅读(...) 评论()鄂尔多斯教育在线 >> 首页
&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&
您现在的位置:&&>>&首页
·最新公告
·用户登录
&&没有公告
[][][][][][][][][]
[]3月24日[]3月24日[]6月21日[]6月21日[]6月21日[]6月13日[]6月9日[]6月2日[]6月1日
06-07[]05-0304-21[]12-28[]12-15[]10-12[]07-09[]06-30[]06-04
[][][][][][][][][]
[]09-12[]08-14[]06-21[]11-01[]08-03[]07-25[]07-25[]07-23[]07-15
&& 教育动态
&[]&(05-08)&[]&(11-28)&[]&(01-19)&[]&(01-18)&[]&(01-18)&[]&(06-22)&[]&(06-21)&[]&(06-21)&[]&(06-16)&[]&(06-15)&[]&(06-14)
&& 基础教育
&[]&(5月8日)&[]&(5月31日)&[]&(5月6日)&[]&(4月14日)&[]&(3月23日)&[]&(3月3日)&[]&(1月3日)&[]&(10月13日)&[]&(8月27日)&[]&(6月16日)&[]&(4月25日)
鄂尔多斯市教育
杭锦旗教育
乌审旗教育
东胜区教育局
伊旗教育局
达旗教育局
准旗教育局
鄂旗教育局
前旗教育局
鄂尔多斯市优秀网站
东胜区东联现代中学
东胜区滨河小学
东胜区教育局(教育社区)
鄂尔多斯市第一中学
鄂尔多斯理工学校
北京师范大学-鄂尔多斯附属学校
文明小博客网站
北师大附属小学
东联现代中学
鄂尔多斯市一中
鄂尔多斯市二中
鄂尔多斯市三中
鄂尔多斯市蒙中
杭锦旗中学
东胜区一中
东胜区一小
杭锦旗龙子心小学
东胜区五小
东胜区铁小
东胜区八小
& 学校动态
[][][][][][][][]
& 招生考试
&[]&(06-27)&[]&(05-15)&[]&(04-06)&[]&(11-12)&[]&(09-06)&[]&(09-01)&[]&(04-08)&[]&(03-03)&[]&(12-02)&[]&(11-21)
建议您使用分辨率浏览本站效果更佳联系***: 网站维护:鄂尔多斯电教馆 地址:鄂尔多斯市林荫路北一号【图】天津生活快讯(随时更新)-至海新闻网
天津生活快讯(随时更新)
编辑:金贸河东
“微雨众卉新,一雷惊蛰始。”预计未来一周,冷空气活动频繁----周一(3月7日):多云,东南风2-3级,最高11℃,最低1℃周二(3月8日):多云转阴,东北风4-5级,最高7℃,最低1℃周三(3月9日):阴转晴,东风转西北风4-5级转5-6级,最高5℃,最低-1℃周四(3月10日):晴间多云,北风4-5级转3-4级,最高5℃,最低-2℃周五(3月11日):晴间多云,北风转西南风2-3级,最高7℃,最低-1℃【便民信息:河北区寿安街出入境管理局自助发证室暂停服务】 因电力改造,河北区寿安街19号天津市公安局出入境管理局自助发证室,自日(周六)24时至3月6日(周日)24时,暂停自助发证服务。小伙伴们,周知!避免跑冤枉路!【3月份坐飞机去这些地方,白菜价!】3月份机票价格将现冰点价,一些热门旅游航线,如海口、成都、西安等,机票价格降至3折左右水平,降幅达70%。天津至厦门、长春等地的航班出现2.3折左右特价票,天津至上海的票价低至2.2折,390元起售。业内人士建议,错峰出行可大大降低成本。【“爱心急救角”装扮公交头等舱 抢出黄金4分钟】3日上午,在体院北公交站619路上多了块“爱心急救角”,里面还放着一个名叫“除颤仪”的宝贝,有了它,一旦车上有人急需心脏复苏,最近的距离最快的速度就可以接受急救。【天津智能停车系统上线】3月10日起,智能停车系统将在天津所有公众停车场全面上线。届时,市民只需下载“公众停车宝”APP,停车后即可在用手机上轻松缴费,既方便快捷,又能避免一些不必要的纠纷。该软件不仅具有充值、缴费功能,还能寻找周边的停车场,同时可以查询3个月内所有停车记录,还具有开***、投诉等功能。如果市民停车后未缴费便离开,将会被系统记录在“黑名单”里,手机APP上也会做出提示,需要市民在下次停车时补齐停车费。此外,智能化上线后,公众停车场“15分钟内免费停车”的举措将继续实施。