java 四舍六入五成双_【数据小常识】“四舍六入五成双”

“四舍六入五成双”规则如下:

“四舍六入五成双”,也即“4舍6入5凑偶”,这里“四”是指≤4 时舍去,"六"是指≥6时进上。

"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:5前为奇数,舍5入1;5前为偶数,舍5不进(0是偶数)。

一、具体计算规则:

(1)被修约的数字小于5时,该数字舍去;

(2)被修约的数字大于5时,则进位;

(3)被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。

二、来由:

这一方式的另一个常见名称为“银行家舍入”,是IEEE754标准的推荐舍入标准。这一方式跟通常的四舍五入相比,平均数方面更能保持原有数据的特性。

三、举例:

9.8249=9.82, 9.82671=9.83

9.8350=9.84, 9.8351 =9.84

9.8250=9.82, 9.82501=9.83

js的Number.toFixed()实际的精度确认规则是四舍六入五成双,逢四下舍,逢六入一,逢五时,根据浏览器内核计算结果也不尽相同。

from pyecharts_javascripthon.dom import Number# for Number module

Number(9.249).toFixed(2)

"9.25"

Number(9.82671).toFixed(2)

"9.83"

Number(9.8350).toFixed(2)

"9.84"

Number(9.8351).toFixed(2)

"9.84"

Number(9.8250).toFixed(2)

"9.82"

Number(9.82501).toFixed(2)

"9.83"

js的Math.round()实际的精度确认规则是四舍六入五成双,逢四下舍,逢六入一,逢五时,根据浏览器内核计算结果也不尽相同。

from pyecharts_javascripthon.dom import Math# for Math module

Number(point*100).toFixed(2)+"%"

"0.42%"

Math.round(0.00999 * 10000) / 100 + "%"

"1%"

Number(0.00988*100).toFixed(2)+"%"

"0.99%"

Math.round(0.00984 * 10000) / 100 + "%"

"0.98%"

Number(0.00984*100).toFixed(2)+"%"

"0.98%"

(window.parseFloat(0.02451)*100).toFixed(2) +"%"

"2.45%"

解决方案:

方法一:通过toFixed(num)方法来保留小数。因为这个方法是根据四舍五入来保留小数的,所以最后的计算结果不精确。

(1.0-0.9).toFixed(digits)// toFixed() 精度参数须在 0 与20 之间(digits是精确的小数点后的位数)

parseFloat((1.0-0.9).toFixed(10)) === 0.1 // 结果为True

parseFloat((1.0-0.8).toFixed(10)) === 0.2 // 结果为True

parseFloat((1.0-0.7).toFixed(10)) === 0.3 // 结果为True

parseFloat((11.0-11.8).toFixed(10)) === -0.8 // 结果为True

parseFloat((2.22 + 0.1).toFixed(10)) ===2.23 //结果为True

方法二:把要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,计算完以后再降级。具体的我没有实现过。

方法三:Math.floor(xxx * 10)/ 10 //精确到小数点后一位

1.11*10

11.100000000000001 //精度不准确

Math.floor(1.11*10)/10 // 精确到小数点后一位

1.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值