Vra

Byvoorbeeld, die standaard-afdeling simbool '/' rondes aan nul:

>>> 4 / 100
0

Maar ek wil dit om terug te keer 0.04. Wat kan ek gebruik?

Was dit nuttig?

Oplossing

Daar is drie opsies:

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

wat dieselfde gedrag as die C, C ++, Java, ens, of

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

Jy kan ook aktiveer hierdie gedrag deur die verbygaan van die argument -Qnew om die Python tolk:

$ python -Qnew
>>> 4 / 100
0.04

Die tweede opsie sal die verstek in Python 3.0 wees. As jy wil die ou heelgetal afdeling het, moet jy die // operateur gebruik.

Edit : bygevoeg artikel oor -Qnew, te danke aan ΤΖΩΤΖΙΟΥ

Ander wenke

Ander antwoorde raai hoe om 'n swaai-punt waarde te kry. Terwyl hierdie naby aan wat jy wil ie wees, sal dit nie presies te wees:

>>> 0.4/100.
0.0040000000000000001

As jy werklik wil 'n desimale waarde, doen die volgende:

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

Dit sal jou 'n voorwerp wat behoorlik weet wat 4/100 in basis 10 is "0.04" gee. Swaai-punt getalle is eintlik in basis 2, maw binêre, nie desimaal.

Maak een of albei van die terme 'n drywende punt nommer, soos so:

4.0/100.0

As alternatief, draai op die funksie wat standaard in Python 3.0, 'n ware afdeling, wat doen wat jy wil wees. Op die top van jou module of script, doen:

from __future__ import division

Jy mag dalk wil om te kyk na Python se desimale pakket, ook. Dit sal lekker desimale resultate te lewer.

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

Jy moet Python vertel om te gebruik drywende punt waardes, nie heelgetalle. Jy kan dit doen deur eenvoudig die gebruik van 'n desimale punt jouself in die insette:

>>> 4/100.0
0.040000000000000001

Probeer 4.0 / 100

'n eenvoudige roete 4 / 100.0

of

4.0 / 100

Hier het ons twee moontlike gevalle gegee hieronder

from __future__ import division

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

Jy kan ook probeer om die toevoeging van 'n "0,0" aan die einde van die getal.

4.0 / 100.0

Jy kan nie 'n desimale waarde word deur een getal met 'n ander te kry, sal jy altyd kry 'n heelgetal op die manier (tot gevolg afgekapte om heelgetal). Jy moet ten minste een waarde aan 'n desimale getal wees.

Voeg die volgende funksie in jou kode met sy terugbel.

# 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

Hierdie funksie werk op die basis van "Euclid delingsalgoritme". Hierdie funksie is baie nuttig as jy nie wil hê dat enige eksterne kop lêers in jou projek.

Syntex: kloof ([Divident], [deler], [desimale plek (opsioneel))

Kode: divide(1, 7, 10) OR divide(1, 7)

Kommentaar hieronder vir enige navrae.

Voer afdeling van toekomstige biblioteek soos volg:

from__future__ import division
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top