[python] round v python 3.0

Jan Janech devel na atlas.sk
Pondělí Únor 2 11:24:20 CET 2009


Ja som aj pisal, ze fcia round zostane aka je. Iba sa prida dalsia pre 
aritmeticke zaokruhlovanie. V pripade, ze chcete aktualizovat fciu 
round, tak treba spravit:

__builtins__.round = lambda num: math.floor(num+0.5)


Inak, som si vsimol, ze to zle zaokruhluje zaporne cisla, takze spravne 
bude:

math.round = lambda num: math.floor(num+0.5) if num >= 0 else \
                         -math.floor(-num+0.5)

Jan Janech

Tovim wrote:
> Olé, round(2.5) již dává 3; jenom 2 maličké poznámky:
> V Python30 je round v hlavním modulu (nevolá se math).
> Navržená úprava platí jen pro aktuální seanci.
> 
> Myslím si, že to je Pythonu bota, i když se o tom někde bla bla bla píše.
> Tovim
> 
> 
> 
> 
> 
> import math
> math.round = lambda num: math.floor(num+0.5)
> 
> round sa bude stale spravat ako sa ma, a pribudne math.round na klasicke 
> aritmeticke zaokruhlovanie.
> 
> Jan Janech
> 
> azurIt wrote:
>> taktiez si myslim, ze je to velmi nestastne riesenie, mala sa pre toto
> vytvorit nova funkcia. existuje tam aj nieco pre 'klasicke' zaokruhlovanie ?
>> azur
>>
>>
>>> -----Pôvodná správa-----
>>> Od: Pavel Kosina [mailto:geon na post.cz]
>>> Komu: Konference PyCZ <python na py.cz>
>>> Predmet: Re: [python] round v python 3.0
>>>
>>>
>>> Děkuji, ale stejně je to zvláštní. Nevím, nakolik se Python používá více
>>> k vědeckým a statistickým výpočtům než na běžnou matematiku. A i kdyby
>>> -  tento způsob zaokrouhlování mohl zůstat někde v modulu math nebo
>>> scientific (kdyby existoval). Pokud budeme mít extrémní případ ze samých
>>> čísel 0,5 - 1,5 - 2,5- 3,5- apod tak se chyba horší, protože např. nikdy
>>> nedosáhneme na zaokrouhlení 1 -3 - 5  apod.-.-..... To s Vámi
>>> nepolemizuji, jen přemýšlím nahlas.
>>>
>>> --
>>> geon
>>> Pavel Kosina
>>>
>>>
>>>
>>>
>>> Stepan Wagner napsal(a), dne 1.2.2009 16:28:
>>>> citace ze stranky
> http://en.wikipedia.org/wiki/Rounding#Round-to-even_method
>>>> """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."""
>>>>
>>>> Stepan
>>>>
>>>> 2009/2/1 Pavel Kosina <geon na post.cz>:
>>>>
>>>>> Nevíte někdo, *proč* v Python 3.0 platí:
>>>>>
>>>>>
>>>>>>>> round(0.5)
>>>>>>>>
>>>>> 0
>>>>>
>>>>>>>> round (1.5)
>>>>>>>>
>>>>> 2
>>>>>
>>>>>>>> round (2.5)
>>>>>>>>
>>>>> 2
>>>>>
>>>>>>>> round (3.5)
>>>>>>>>
>>>>> 4
>>>>>
>>>>> Jo, máme to napsané v manuálu, že to takhle je
>>>>> http://docs.python.org/3.0/library/functions.html#round, ale mě zajímá
> proč
>>>>> to je takto, a ne podle toho, jak se to učí v 5. třídě, tedy že od
> pětky
>>>>> včetně nahoru se zaokrouhluje nahoru vždy, a ne jen někdy .....
>>>>>
>>>>> Díky
>>>>>
>>>>> --
>>>>> geon
>>>>> Pavel Kosina
>>>>>
>>>>>
>>> _______________________________________________
>>> Python mailing list
>>> Python na py.cz
>>> http://www.py.cz/mailman/listinfo/python
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>>
>>
> 
> 


-- 

____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita


Další informace o konferenci Python