四舍六入五成双(四舍六入奇偶效验)银行家算法

规则:

四舍六入五考虑,
五后非零就进一,
五后皆零看奇偶,
五前为偶应舍去,
五前为奇要进一。

Math.Round(new Decimal(1.2050),2)        1.2
Math.Round(new Decimal(1.2150),2)        1.22
Math.Round(new Decimal(1.2250),2)        1.22
Math.Round(new Decimal(1.2350),2)        1.24
Math.Round(new Decimal(1.2450),2)        1.24
Math.Round(new Decimal(1.2550),2)        1.26
Math.Round(new Decimal(1.2650),2)        1.26
Math.Round(new Decimal(1.2750),2)        1.28
Math.Round(new Decimal(1.2850),2)        1.28
Math.Round(new Decimal(1.2950),2)        1.3
Math.Round(new Decimal(3791.565263888889),2)        3791.57

银行家算法(Banker's Rounding)也称为五成,是一种用于进行数字算法。在该算法中,当要弃的数字为5时,有两种情况: 1. 如果5后面的数字非零,则向上进位; 2. 如果5后面的数字是零,并且5前面的数字是偶数,则向下弃;如果5前面的数字是奇数,则向上进位。 这种算法的目的是在进行时,尽量保持结果更加均衡。它常用于金融领域,以避免误差对计算结果产生影响。 以下是一个使用 JavaScript 实现银行家算法的示例代码: ```javascript function bankerRound(num) { var rounded = num.toFixed(2); // 将数字保留两位小数 // 取小数部分的最后一位数字 var lastDigit = parseInt(rounded.charAt(rounded.length - 1)); // 取小数部分的倒数第二位数字 var secondLastDigit = parseInt(rounded.charAt(rounded.length - 2)); // 如果最后一位数字大于等于5,则进行进位 if (lastDigit >= 5) { // 如果最后一位数字是5,并且倒数第二位数字是偶数,则向下弃 if (lastDigit === 5 && secondLastDigit % 2 === 0) { rounded = (Math.floor(num * 100) / 100).toFixed(2); } else { rounded = (Math.ceil(num * 100) / 100).toFixed(2); } } return parseFloat(rounded); } // 示例用法 var num = 1.235; var roundedNum = bankerRound(num); console.log(roundedNum); // 输出 1.24 ``` 这段代码实现了银行家算法的逻辑,对给定的数字 `num` 进行五成,并返回后的结果。注意,该算法将数字保留两位小数,因此返回值为浮点数类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值