Jak uzyskać wartość dziesiętną podczas korzystania z operatora podziału w Pythonie?
Na przykład standardowy symbol podziału " / " zaokrągla się do zera:
>>> 4 / 100
0
Jednak chcę, aby zwrócił 0.04. Czego używam?
11 answers
Są trzy opcje:
>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04
Które jest takim samym zachowaniem jak C, C++, Java itp, Czy
>>> from __future__ import division
>>> 4 / 100
0.04
Można również aktywować to zachowanie przekazując argument -Qnew
do interpretera Pythona:
$ python -Qnew
>>> 4 / 100
0.04
Druga opcja będzie domyślna w Pythonie 3.0. Jeśli chcesz mieć Stary podział liczb całkowitych, musisz użyć operatora //
.
Edit : Dodano sekcję o -Qnew
, dzięki ΤΖΩΤΖΙΟΥ !
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:05
Inne odpowiedzi sugerują, jak uzyskać wartość zmiennoprzecinkową. Chociaż to wlil być blisko tego, co chcesz, to nie będzie dokładne:
>>> 0.4/100.
0.0040000000000000001
Jeśli chcesz mieć wartość dziesiętną , zrób to:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
To da ci obiekt, który prawidłowo wie, że 4 / 100 W baza 10 wynosi "0.04". Liczby zmiennoprzecinkowe są w zasadzie w bazie 2, tj. binarne, a nie dziesiętne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 21:12:07
Niech jeden lub oba terminy będą liczbami zmiennoprzecinkowymi, w ten sposób:
4.0/100.0
Alternatywnie, włącz funkcję, która będzie domyślna w Pythonie 3.0, 'true division', która robi to, co chcesz. Na górze modułu lub skryptu, do:
from __future__ import division
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 20:08:45
Musisz powiedzieć Pythonowi, aby używał wartości zmiennoprzecinkowych, a nie liczb całkowitych. Można to zrobić po prostu używając przecinka w wejściach:
>>> 4/100.0
0.040000000000000001
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 20:07:38
Możesz też zajrzeć do pakietu decimal Pythona. Zapewni to dobre wyniki dziesiętne.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 21:38:16
Try 4.0 / 100
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 20:07:20
Prosta droga 4 / 100.0
LUB
4.0 / 100
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 20:07:27
Tutaj mamy dwa możliwe przypadki podane poniżej
from __future__ import division
print(4/100)
print(4//100)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 06:51:23
Nie możesz uzyskać wartości dziesiętnej dzieląc jedną liczbę całkowitą z inną, zawsze otrzymasz liczbę całkowitą w ten sposób (wynik obcięty do liczby całkowitej). Aby Liczba dziesiętna była równa co najmniej jednej wartości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 20:11:02
Dodaj następującą funkcję w kodzie z jego wywołaniem zwrotnym.
# Starting of the function
def divide(number_one, number_two, decimal_place = 4):
quotient = number_one/number_two
remainder = number_one % number_two
if remainder != 0:
quotient_str = str(quotient)
for loop in range(0, decimal_place):
if loop == 0:
quotient_str += "."
surplus_quotient = (remainder * 10) / number_two
quotient_str += str(surplus_quotient)
remainder = (remainder * 10) % number_two
if remainder == 0:
break
return float(quotient_str)
else:
return quotient
#Ending of the function
# Calling back the above function
# Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428
Ta funkcja działa na podstawie "algorytmu podziału Euklidesa". Ta funkcja jest bardzo przydatna, jeśli nie chcesz importować żadnych zewnętrznych plików nagłówkowych w projekcie.
Syntex: divide ([divident], [divisor], [decimal place(opcjonalne))
Kod: divide(1, 7, 10)
lub divide(1, 7)
Komentarz poniżej dla wszelkich zapytań.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 08:28:42
Importuj podział z przyszłej biblioteki w następujący sposób:
from__future__ import division
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 11:22:07