Samozrejme, ono to ide "zapnut" aj globalne pre instalaciu pythonu a nie pre jeden program. Nikdy by som nieco take vsak nespravil, lebo to moze narusit funkcnost programov zavislych na novom chovani fcie round.

Ak Vam to vsak nevadi, tak nech sa paci:

Subor sitecustomize.py v Lib adresari pythonu (/usr/lib/python2.x v linuxe, c:\Python2x\Lib vo windows) (neexistuje, treba vytvorit):

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

Jan Janech

Tovim wrote:
Reply to Jan Janech, Pavel Kosina

Právě jsem si přečetl v Googlu, ani jsem nevěděl, že to existuje: Na
zaokrouhlování jsou dvě metody, "common" a "round-to-even". Jestli Python zaokrouhluje podle metody "zaokrouhli na sudou", potom to má
dobře. Chceme-li tedy mít zaokrouhlíno tak, jak jsme zvyklí, měli bychom si
vytvořit nějaké udělátko.

Jane Janechu, myslel jsem, že když napíši "__builtins__.round = lambda num:
math.floor(num+0.5)",
tak si někam trvale zapíšu opravenou verzi round.
Kýho výra. Chodí to jenom pro aktuální seanci.
Poraďte mi chlapci, jde-li to někam trvale zapsat.
Děkuji. Tovim



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:[email protected]]
Komu: Konference PyCZ <[email protected]>
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 <[email protected]>:

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
[email protected]
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python








--

____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem