文中对于 _ 提到,它代表了上一次的输出结果,"用户应该将其视为只读变量",实际情况是你也可以对于_ 赋值,_=10 是没有毛病的,但这样的结果会导致你在之后调用 _ 的时候全部变成了10,除非你 del _。
对于round:
>>> round(10.5) 10 >>> round(11.5) 12 >>>
Python 所谓的奇进偶弃,因为浮点数的表示在计算机中并不准确,用的时候可能要注意一下。
还可以参考这篇文章: Python 中关于 round 函数的小坑
happy_ing
文中对于 _ 提到,它代表了上一次的输出结果,"用户应该将其视为只读变量",实际情况是你也可以对于_ 赋值,_=10 是没有毛病的,但这样的结果会导致你在之后调用 _ 的时候全部变成了10,除非你 del _。
对于round:
>>> round(10.5) 10 >>> round(11.5) 12 >>>
Python 所谓的奇进偶弃,因为浮点数的表示在计算机中并不准确,用的时候可能要注意一下。
还可以参考这篇文章: Python 中关于 round 函数的小坑
DZ_小白王子
由于上面大神的提出,我又看了一下
print(round(10.4)) #10 print(round(10.5)) #10 print(round(10.6)) #11 print() print(round(11.4)) #11 print(round(11.5)) #12 print(round(11.6)) #12
由运行得出结论:
所以当小数点左边分别为奇数和偶数的时候,小数点右边的取舍也分别对应两种取舍标准
这是个坑啊!不知道小数点后两位是怎样的,有兴趣的小伙伴可以试一下,记得@我,谢谢!
春天的诗
关于round,接力分析,结论如下:
当个位为奇数,小数部分>=0.5入,其余为舍
当个位为偶数,小数部分>0.5入,其余为舍。
交互模式下的 example:
>>> round(10.49) 10 >>> round(10.50) 10 >>> round(10.51) 11 >>> round(11.50) 12 >>> round(11.49) 11
“4舍6入5看齐,奇进偶不进”我觉得并不是因为浮点数在计算机表示的问题。计算机浮点数的表示是 ieee 定义的标准规则,如果 python 中存在,没道理其他语言中不存在。事实上是因为该取舍方法比过去的 "四舍五入" 方法在科学计算中更准确。而国家标准也已经规定使用 “4舍6入5看齐,奇进偶不进” 取代"四舍五入".
从统计学的角度上来讲,如果大量数据无脑的采用四舍五入会造成统计结果偏大。而"奇进偶舍"可以将舍入误差降到最低。
奇进偶舍是一种比较精确比较科学的计数保留法,是一种数字修约规则。
其具体要求如下(以保留两位小数为例):
>>> round(5.215,2)#实际并没有进位 5.21 >>> round(5.225,2) 5.22 >>> >>> round(1.5)#此处进位 2 >>> round(1.5)==round(2.5)#偶数舍去 True >>> round(1.15,1) 1.1 >>> round(1.25,1) 1.2 >>> round(1.151,1) 1.2 >>> round(1.251,1) 1.3
永远的兄弟
关于小数的四舍五入问题与电脑的二进制和十进制之间转换问题,这不仅是出现在小数上,也出现在一些除法上,例如:
10/3=3.3333333333333335 而不是约等于 3.3333……:
>>> 10/3 3.3333333333333335
还有就是 0.1+0.1+0.1-0.3 不会等于 0,而是等于 5.551115123125783e-17:
>>> 0.1+0.1+0.1-0.3 5.551115123125783e-17