parte - redondear decimales python
¿Cómo obtengo un valor decimal cuando uso el operador de división en Python? (11)
Por ejemplo, el símbolo de división estándar ''/'' se redondea a cero:
>>> 4 / 100
0
Sin embargo, quiero que devuelva 0.04. ¿Qué uso?
Agregue la siguiente función en su código con su devolución de llamada.
# 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
Esta función funciona sobre la base del "Algoritmo de la División Euclid". Esta función es muy útil si no desea importar ningún archivo de encabezado externo en su proyecto.
Syntex: divide ([divisor], [divisor], [lugar decimal (opcional)]
Código: divide(1, 7, 10)
O divide(1, 7)
Comenta abajo para cualquier consulta.
Aquí tenemos dos posibles casos dados a continuación
from __future__ import division
print(4/100)
print(4//100)
Convierta uno o ambos términos en un número de punto flotante, como ese:
4.0/100.0
Alternativamente, active la función predeterminada en Python 3.0, ''división verdadera'', que hace lo que quiere. En la parte superior de tu módulo o script, hazlo:
from __future__ import division
Es posible que también desee ver el paquete decimal de Python. Esto proporcionará buenos resultados decimales.
>>> decimal.Decimal(''4'')/100
Decimal("0.04")
Hay tres opciones:
>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04
que es el mismo comportamiento que C, C ++, Java, etc.
>>> from __future__ import division
>>> 4 / 100
0.04
También puede activar este comportamiento pasando el argumento -Qnew
al intérprete de Python:
$ python -Qnew
>>> 4 / 100
0.04
La segunda opción será la predeterminada en Python 3.0. Si desea tener la división de enteros anterior, debe usar el operador //
.
Editar : sección agregada sobre " -Qnew
, gracias a ΤΖΩΤΖΙΟΥ !
Importar división de la biblioteca futura de esta manera:
from__future__ import division
Necesita decirle a Python que use valores de coma flotante, no enteros. Puedes hacerlo simplemente usando un punto decimal en las entradas:
>>> 4/100.0
0.040000000000000001
No puede obtener un valor decimal al dividir un número entero con otro, siempre obtendrá un número entero de esa manera (resultado truncado en número entero). Necesita al menos un valor para ser un número decimal.
Otras respuestas sugieren cómo obtener un valor de coma flotante. Si bien esto estará cerca de lo que desea, no será exacto:
>>> 0.4/100.
0.0040000000000000001
Si realmente quiere un valor decimal , haga esto:
>>> import decimal
>>> decimal.Decimal(''4'') / decimal.Decimal(''100'')
Decimal("0.04")
Eso le dará un objeto que sepa correctamente que 4/100 en la base 10 es "0.04". Los números de coma flotante están realmente en la base 2, es decir, binarios, no decimales.
Prueba 4.0 / 100
Una ruta simple 4 / 100.0
o
4.0 / 100