Hoe krijg ik een decimale waarde als ik de delingsoperator in Python gebruik?

Bijvoorbeeld, het standaard delingssymbool ‘/’ rondt af op nul:

>>> 4 / 100
0

Ik wil echter dat het 0,04 retourneert. Wat gebruik ik?


Antwoord 1, autoriteit 100%

Er zijn drie opties:

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

wat hetzelfde gedrag is als C, C++, Java etc, of

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

Je kunt dit gedrag ook activeren door het argument -Qnewdoor te geven aan de Python-interpreter:

$ python -Qnew
>>> 4 / 100
0.04

De tweede optie is de standaard in Python 3.0. Als u de oude deling van gehele getallen wilt hebben, moet u de operator //gebruiken.

Bewerken: sectie toegevoegd over -Qnew, met dank aan ΤΖΩΤΖΙΟΥ!


Antwoord 2, autoriteit 17%

Andere antwoorden geven aan hoe u een drijvende-kommawaarde kunt krijgen. Hoewel dit in de buurt komt van wat je wilt, zal het niet exact zijn:

>>> 0.4/100.
0.0040000000000000001

Als je eigenlijk een decimalewaarde wilt, doe dit dan:

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

Dat geeft je een object dat goed weet dat 4/100 in basis 10“0.04” is. Drijvende-kommagetallen zijn eigenlijk in grondtal 2, d.w.z. binair, niet decimaal.


Antwoord 3, autoriteit 5%

Maak van een of beide termen een getal met drijvende komma, zoals:

4.0/100.0

Als alternatief kunt u de functie inschakelen die standaard in Python 3.0 wordt gebruikt, ‘true division’, die doet wat u wilt. Doe bovenaan uw module of script:

from __future__ import division

Antwoord 4, autoriteit 3%

Misschien wil je ook het decimaalpakket van Python bekijken. Dit levert mooie decimale resultaten op.

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

Antwoord 5, autoriteit 3%

Je moet Python vertellen om drijvende-kommawaarden te gebruiken, geen gehele getallen. U kunt dat eenvoudig doen door zelf een decimaalteken in de invoer te gebruiken:

>>> 4/100.0
0.040000000000000001

Antwoord 6

Een eenvoudige route 4 / 100.0

of

4.0 / 100


Antwoord 7

Hier hebben we twee mogelijke gevallen die hieronder worden gegeven

from __future__ import division
print(4/100)
print(4//100)

Antwoord 8

Probeer 4.0/100


Antwoord 9

Je kunt geen decimale waarde krijgen door een geheel getal te delen door een ander, op die manier krijg je altijd een geheel getal (resultaat afgekapt tot geheel getal). U heeft minimaal één waarde nodig om een ​​decimaal getal te zijn.


Antwoord 10

Voeg de volgende functie toe aan uw code met zijn callback.

# 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

Deze functie werkt op basis van “Euclid Division Algorithm”. Deze functie is erg handig als u geen externe headerbestanden in uw project wilt importeren.

Syntex : divide([divident], [deler], [decimale plaats(optioneel))

Code: divide(1, 7, 10)OF divide(1, 7)

Reageer hieronder voor eventuele vragen.


Antwoord 11

U kunt ook proberen een “.0” toe te voegen aan het einde van het nummer.

4.0/100,0


Antwoord 12

Het laat alleen het breukgedeelte achter decimaal vallen.
Heb je geprobeerd: 4.0 / 100


Antwoord 13

Importeer divisie uit toekomstige bibliotheek als volgt:

from__future__ import division

Other episodes