概述
规则:
四舍六入五考虑,
五后非零就进一,
五后皆零看奇偶,
五前为偶应舍去,
五前为奇要进一。
为了避免四舍五入规则造成的结果偏高,误差偏大的现象出现,一般采用四舍六入五留双规则。
// 1.当尾数小于或等于4时,直接将尾数舍去
System.out.println("10.2731: " + new BigDecimal("10.2731").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 10.2731: 10.27
System.out.println("18.5049: " + new BigDecimal("18.5049").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 18.5049: 18.50
System.out.println("16.4005: " + new BigDecimal("16.4005").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 16.4005: 16.40
System.out.println("27.1829: " + new BigDecimal("27.1829").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 27.1829: 27.18
// 2.当尾数大于或等于6时将尾数舍去向前一位进位
System.out.println("16.7777: " + new BigDecimal("16.7777").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 16.7777: 16.78
System.out.println("10.29501: " + new BigDecimal("10.29501").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 10.29501: 10.30
System.out.println("21.0191: " + new BigDecimal("21.0191").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 21.0191: 21.02
// 3.当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向前进一位;若前一位数字此时为偶数,则应将尾数舍去。数字“0”在此时应被视为偶数。
System.out.println("12.6450: " + new BigDecimal("12.6450").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 12.6450: 12.64
System.out.println("18.2750: " + new BigDecimal("18.2750").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 18.2750: 18.28
System.out.println("12.7350: " + new BigDecimal("12.7350").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 12.7350: 12.74
System.out.println("21.845000: " + new BigDecimal("21.845000").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 21.845000: 21.84
// 4.当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数还是偶数,也无论“5”后面不为0的数字在哪一位上,都应向前进一位。
System.out.println("12.73507: " + new BigDecimal("12.73507").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 12.73507: 12.74
System.out.println("21.84502: " + new BigDecimal("21.84502").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 21.84502: 21.85
System.out.println("12.64501: " + new BigDecimal("12.64501").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 12.64501: 12.65
System.out.println("18.27509: " + new BigDecimal("18.27509").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 18.27509: 18.28
System.out.println("38.305000001: " + new BigDecimal("38.305000001").setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 38.305000001: 38.31
银行家算法
最后
以上就是传统小伙为你收集整理的JAVA 四舍六入的全部内容,希望文章能够帮你解决JAVA 四舍六入所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复