Python round 四�五入分�讨论

原文: Python3 数字(Number)

   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

由�行得出结论:

  1. 当�数点左边为�数:�数点�边X<6,�
  2. 当�数点左边为�数:�数点�边X>=6,入
  3. 当�数点左边为奇数:�数点�边X<5,�
  4. 当�数点左边为奇数:�数点�边X>=5,入

所以当�数点左边分别为奇数和�数的时候,�数点�边的��也分别对应两���标准

这是个�啊��知��数点�两�是怎样的,有兴趣的�伙伴�以试一下,记得@我,谢谢�

  æ˜¥å¤©çš„诗

关于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看é½�,奇进å�¶ä¸�è¿›â€� å�–代"å››èˆ�五入".

从统计学的角度上�讲,如果大�数�无脑的采用四�五入会造�统计结果�大。而"奇进��"�以将�入误差�到最低。

奇进��是一�比较精确比较科学的计数�留法,是一�数字修约规则。

其具体�求如下(以�留两��数为例):

  • (1)è¦�求ä¿�ç•™ä½�æ•°çš„å�Žä¸€ä½�如果是4或者4以下的数字,则èˆ�去, 例如 5.214ä¿�留两ä½�å°�数为5.21。
  • (2)如果ä¿�ç•™ä½�æ•°çš„å�Žä¸€ä½�如果是6或者6以上的数字,则进上去, 例如5.216ä¿�留两ä½�å°�数为5.22。
  • (3)如果ä¿�ç•™ä½�数是ä¿�留整数部分或ä¿�留一ä½�å°�数,则è¦�æ ¹æ�®ä¿�ç•™ä½�æ�¥å†³å®šå¥‡è¿›å�¶èˆ�:
    >>> 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
    
  • (4) 如果ä¿�ç•™ä½�æ•°çš„å�Žä¸€ä½�如果是5,且该ä½�æ•°å�Žæœ‰æ•°å­—。则进上去,例如5.2152ä¿�留两ä½�å°�数为5.22,5.2252ä¿�留两ä½�å°�数为5.23,5.22500001ä¿�留两ä½�å°�数为5.23。
从统计学的角度,“奇进���比“四�五入��科学,在大��算时,它使�入�的结果误差的�值趋于零,而�是�四�五入那样逢五就入,导致结果��大数,使得误差产生积累进而产生系统误差,“奇进���使测�结果�到�入误差的影��到最低。

  æ°¸è¿œçš„兄弟

关于�数的四�五入问题与电脑的二进制和�进制之间转�问题,这�仅是出现在�数上,也出现在一些除法上,例如:

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