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