浮点数的四舍五入,其实是更科学的四舍六入五成双

文章探讨了浮点数在使用printf函数输出时的四舍五入规则,指出正数和负数由于五成双原则(奇数进位,偶数舍去)导致不同的结果。作者通过实例展示了正负数中5的处理方式和大小比较的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动机

笔者前些日子在学到翁恺老师关于浮点数的输入输出课程中没太理解到老师说的浮点数的四舍五入。具体坐标如下

这里说在%.3f的情况下输出-0.0045会得到-0.004

而后的在同一条件下-0.0049输出会得到-0.005

老师说这是浮点数的四舍五入,弹幕的解释也各说纷纭...

之后我便尝试了一下正数的输出,得到了个肤浅的错误结论:无论正数负数,计算机都只会五舍六入,而且还只是单纯的5及以下去掉,6及以上使前一位加1,不考虑负数条件下数的大小与正数相反。()

之后的最终结论是:

计算机浮点数用printf()函数输出表面上一般会自动帮你四舍五入,不过对5的处理有些不同

在常用系统上是科学的四舍  六入  五则成双。

所谓五成双,是指5的取舍有两个标准,即若5的前一位是偶数则舍,若为奇数则入。

也有人理解为5前为双(偶)数就舍去。都是一个意思只不过看个人哪里容易理解点。

证明过程:

当浮点数为正数,取%.3f

这是正数0.0045和0.0055的对比。当5前为偶数时,5被舍去;当5前为奇数时,5则使前一位进一

这是负数-0.0045和-0.0055的对比。

当5前为偶数时,5被舍去;当5前为奇数时,5则使前一位进一

负数中-0.005>-0.006所以上左一进位后为-0.005

负数大小与正数大小的不同

正数中0.46>0.45,0.56>0.55

负数中-0.45>-0.46,-0.55>-0.56

hh复习复习小学知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值