Python a matematika
Moderátori: psichac, Moderátori
Python a matematika
Python mě neustále štve se svou matematikou, samovolně si přidává desetiná čísla a dělá nepřesné výpočty.
kupříkladu chci zaokrouhlit číslo 0.972 na dvě desetiná místa a co udělá python?
Nevíte co s tím?
>>> x = 0.972
>>> print(round(x, 2))
0.9700001
>>>
kupříkladu chci zaokrouhlit číslo 0.972 na dvě desetiná místa a co udělá python?
Nevíte co s tím?
>>> x = 0.972
>>> print(round(x, 2))
0.9700001
>>>
0
Re: Python a matematika
Kód: Vybrať všetko
$ python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
>>> x=0.9786451212
>>> print(round(x,2))
0.98
>>>
0
Re: Python a matematika
Ano občas to funguje, ale u některý čísel si to dělá co chce, viz jak píšu 0.97 i s tímto číslem ti to jde?
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Python a matematika
To nemá nič spoločné s pythonom. To nie je chyba ale vlastnosť.
https://stackoverflow.com/questions/455 ... mal-points
Jeden z mojich jobov kedysi dávno bolo napísať poriadnu aritmetiku pre fiškálny modul k PC pokladni. Keď sumy obratov preliezli cez miliony, začali sa tratiť haliere. Pôvodný pisatelia C programu tiež nevedeli ako to chodí s float aritmetikou.
https://stackoverflow.com/questions/455 ... mal-points
Jeden z mojich jobov kedysi dávno bolo napísať poriadnu aritmetiku pre fiškálny modul k PC pokladni. Keď sumy obratov preliezli cez miliony, začali sa tratiť haliere. Pôvodný pisatelia C programu tiež nevedeli ako to chodí s float aritmetikou.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Python a matematika
Lze mé řešení udělat efektivněji?
Kód: Vybrať všetko
x = 0.97
print(x)
jednotka = str(int(x))
desetina = str(int((x * 10) % 10))
setina = str(int((x * 100) % 10))
print(str(jednotka + "." + desetina + setina))
Kód: Vybrať všetko
0.9700001
0.97
0
Re: Python a matematika
Ako uz bolo spomenute na stacku. Mozes pouzivat modul "decimal" alebo priamo format.
Kód: Vybrať všetko
>>> x = 0.972
>>> print("{:.2f}".format(x))
0.97
>>> x = 0.97
>>> print("{:.2f}".format(x))
0.97
>>> x = 0.971234
>>> y = float("{:.2f}".format(x))
>>> print (y)
0.97
>>>
0