Edit detail for Zaokrouhlovani revision 3 of 1

3
Editor: geon
Time: 2009/02/02 12:48:12 GMT+1
Note:

changed:
-
.. admonition:: Python
  
   3000

Zaokrouhlování
================


Od Python 3.0 dostala funkce pro zaokrouhlování round() vcelku zvláštní význam. Zaokrouhlení neprobíhá jako v 5. třídě - od 5 nahoru nahoru -  ale jako na vysoké škole u statistiků podle pravidla round-to-even_:


>>> When dealing with large sets of scientific or statistical data,
>>> where trends are important, traditional rounding on average biases the
>>> data upwards slightly. Over a large set of data, or when many
>>> subsequent rounding operations are performed as in digital signal
>>> processing, the round-to-even rule tends to reduce the total rounding
>>> error, with (on average) an equal portion of numbers rounding up as
>>> rounding down. This generally reduces upwards skewing of the
>>> result."""

..  _round-to-even: http://en.wikipedia.org/wiki/Rounding#Round-to-even_method

Jinými slovy se zde tvrdí, že vzniká při tomto způsobu menší statistická chyba. Ukázka zaokrouhlení metodou round-ti-even::

    
    seznam=[i+0.5 for i in range(9)]
    for i in seznam:
        print (i, ":", round(i))
    
    dává:
    
    0.5 : 0
    1.5 : 2
    2.5 : 2
    3.5 : 4
    4.5 : 4
    5.5 : 6
    6.5 : 6
    7.5 : 8
    8.5 : 8
    >>>

Chcete-li dosáhnout obyčejného zaokrouhlení, jak ho znáte ze základní školy, můžete použít následující konstrukci, která přidá funkci round() do modulu math. (tak jak je funguje jen na kladná čísla)::

  import math
  math.round = lambda num, n: math.floor(num*10**n+0.5)/10**n

Python

3000

Zaokrouhlování

Od Python 3.0 dostala funkce pro zaokrouhlování round() vcelku zvláštní význam. Zaokrouhlení neprobíhá jako v 5. třídě - od 5 nahoru nahoru - ale jako na vysoké škole u statistiků podle pravidla round-to-even:

>>> When dealing with large sets of scientific or statistical data,
>>> where trends are important, traditional rounding on average biases the
>>> data upwards slightly. Over a large set of data, or when many
>>> subsequent rounding operations are performed as in digital signal
>>> processing, the round-to-even rule tends to reduce the total rounding
>>> error, with (on average) an equal portion of numbers rounding up as
>>> rounding down. This generally reduces upwards skewing of the
>>> result."""

Jinými slovy se zde tvrdí, že vzniká při tomto způsobu menší statistická chyba. Ukázka zaokrouhlení metodou round-ti-even:

seznam=[i+0.5 for i in range(9)]
for i in seznam:
    print (i, ":", round(i))

dává:

0.5 : 0
1.5 : 2
2.5 : 2
3.5 : 4
4.5 : 4
5.5 : 6
6.5 : 6
7.5 : 8
8.5 : 8
>>>

Chcete-li dosáhnout obyčejného zaokrouhlení, jak ho znáte ze základní školy, můžete použít následující konstrukci, která přidá funkci round() do modulu math. (tak jak je funguje jen na kladná čísla):

import math
math.round = lambda num, n: math.floor(num*10**n+0.5)/10**n