Domanda

Ad esempio, il simbolo di divisione standard '/' arrotonda a zero:

>>> 4 / 100
0

Tuttavia, voglio che restituisca 0.04. Cosa uso?

È stato utile?

Soluzione

Esistono tre opzioni:

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

che ha lo stesso comportamento di C, C ++, Java ecc. o

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

Puoi anche attivare questo comportamento passando l'argomento -Qnew all'interprete Python:

$ python -Qnew
>>> 4 / 100
0.04

La seconda opzione sarà quella predefinita in Python 3.0. Se vuoi avere la vecchia divisione di interi, devi usare l'operatore // .

Modifica : aggiunta una sezione su -Qnew , grazie a & # 932; & # 918; & # 937; & # 932; & # 918; & # 921; & # 927; & # 933;!

Altri suggerimenti

Altre risposte suggeriscono come ottenere un valore in virgola mobile. Mentre questo sarà vicino a quello che vuoi, non sarà esatto:

>>> 0.4/100.
0.0040000000000000001

Se si desidera effettivamente un valore decimale , procedere come segue:

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

Questo ti darà un oggetto che sa correttamente che 4/100 in base 10 è "0,04". I numeri in virgola mobile sono in realtà nella base 2, ovvero binari, non decimali.

Rendi uno o entrambi i termini un numero in virgola mobile, in questo modo:

4.0/100.0

In alternativa, attiva la funzione che sarà predefinita in Python 3.0, 'vera divisione', che fa quello che vuoi. Nella parte superiore del modulo o dello script, esegui:

from __future__ import division

Potresti voler dare un'occhiata anche al pacchetto decimal . Ciò fornirà buoni risultati decimali.

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

Devi dire a Python di usare valori in virgola mobile, non numeri interi. Puoi farlo semplicemente usando tu stesso un punto decimale negli input:

>>> 4/100.0
0.040000000000000001

Prova 4.0 / 100

Un percorso semplice 4 / 100.0

o

4.0 / 100

Qui abbiamo due possibili casi indicati di seguito

from __future__ import division

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

Puoi anche provare ad aggiungere un " .0 " alla fine del numero.

4.0 / 100,0

Non puoi ottenere un valore decimale dividendo un intero con un altro, otterrai sempre un intero in quel modo (risultato troncato in intero). È necessario almeno un valore per essere un numero decimale.

Aggiungi la seguente funzione nel tuo codice con il suo 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

Questa funzione funziona sulla base di "algoritmo divisione Euclide". Questa funzione è molto utile se non vuoi importare file di intestazione esterni nel tuo progetto.

Sintassi: divide ([dividente], [divisore], [decimale (opzionale))

Codice: divide (1, 7, 10) OPPURE divide (1, 7)

Commenta di seguito per qualsiasi domanda.

Importa divisione dalla libreria futura in questo modo:

from__future__ import division
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top