it-swarm-eu.dev

Jak získám desetinnou hodnotu při použití operátoru rozdělení v Pythonu?

Například symbol standardního dělení '/' zaokrouhluje na nulu:

>>> 4 / 100
0

Chci však vrátit 0,04. Co používám?

58
Ray Vega

Existují tři možnosti:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

což je stejné chování jako C, C++, Java atd., nebo 

>>> from __future__ import division
>>> 4 / 100
0.04

Toto chování můžete také aktivovat předáním argumentu -Qnew interpretu Python:

$ python -Qnew
>>> 4 / 100
0.04

Druhá volba bude výchozí v Pythonu 3.0. Pokud chcete mít staré celé číslo, musíte použít operátora //

Edit: přidán oddíl o -Qnew, díky ΤΖΩΤΖΙΟΥ !

121
Torsten Marek

Další odpovědi naznačují, jak získat hodnotu s plovoucí desetinnou čárkou. I když to bude blízké tomu, co chcete, nebude to přesné:

>>> 0.4/100.
0.0040000000000000001

Pokud skutečně chcete desetinnou hodnotu, postupujte takto:

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")

To vám dá objekt, který správně ví, že 4/100 v základně 10 je "0,04". Čísla s plovoucí desetinnou čárkou jsou ve skutečnosti v základně 2, tj. Binární, nikoli desetinné.

24
Glyph

Proveďte jeden nebo oba termíny jako číslo s plovoucí desetinnou čárkou:

4.0/100.0

Případně zapněte funkci, která bude výchozí v Pythonu 3.0, 'true division', to, co chcete. V horní části modulu nebo skriptu postupujte takto:

from __future__ import division
7
Thomas Wouters

Možná se budete chtít podívat i na balíček desetinná balíček Pythonu. To poskytne pěkné desetinné výsledky.

>>> decimal.Decimal('4')/100
Decimal("0.04")
4
S.Lott

Musíte říct Pythonu, aby používal hodnoty s plovoucí desetinnou čárkou, ne celá čísla. Můžete to udělat jednoduše pomocí desetinné čárky ve vstupech:

>>> 4/100.0
0.040000000000000001
3
moonshadow

Zkuste 4.0/100

1
Martin Cote

Jednoduchá cesta 4/100.0 

nebo

4,0/100

1
torial

Zde uvádíme dva možné případy 

from __future__ import division

print(4/100)
print(4//100)
1

Můžete také zkusit přidat ".0" na konci čísla.

4,0/100,0

1
Appu

Nemůžete získat desetinnou hodnotu vydělením jednoho čísla druhým, vždy dostanete celé číslo (výsledek zkrácen na celé číslo). K dekadickému číslu potřebujete alespoň jednu hodnotu.

0
Vasil

Přidejte následující funkci do kódu s jeho zpětným volání.

# 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

Tato funkce funguje na základě "Euclidova Algoritmu". Tato funkce je velmi užitečná, pokud nechcete importovat žádné externí soubory záhlaví ve vašem projektu.

Syntex: divide ([divident], [divisor], [desetinné místo (nepovinné)]

Kód: divide(1, 7, 10) OR divide(1, 7)

Komentář níže pro všechny dotazy.

0
DaredevilRanon