动机
笔者前些日子在学到翁恺老师关于浮点数的输入输出课程中没太理解到老师说的浮点数的四舍五入。具体坐标如下
这里说在%.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复习复习小学知识