Foros del Web » Programando para Internet » Python »

Limitar la cantidad de decimales

Estas en el tema de Limitar la cantidad de decimales en el foro de Python en Foros del Web. Saludos: Hay una forma de limitar los decimales que quiero mostrar al operar numeros? Por ejemplo: Código: a = input ("Ingrese centimetros") b = a/2.54 ...
  #1 (permalink)  
Antiguo 10/09/2011, 19:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 53
Antigüedad: 14 años
Puntos: 2
Limitar la cantidad de decimales

Saludos:

Hay una forma de limitar los decimales que quiero mostrar al operar numeros?
Por ejemplo:
Código:
a = input ("Ingrese centimetros")
b = a/2.54
print a,"cm equivale a",b,"pulgadas"

10 cm equivale a 3.93700787402 pulgadas
Como lo hago si solo quisiera mostrar 4 decimales?


Gracias ;)
__________________
"Porque nada se...
quiero saberlo todo"
  #2 (permalink)  
Antiguo 10/09/2011, 19:57
Avatar de Hazuki  
Fecha de Ingreso: mayo-2011
Mensajes: 34
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Limitar la cantidad de decimales

Puedes hacer algo como:

Código:
a = input ("Ingrese centimetros")
b = str(a/2.54)
print a, "cm equivale a", b[:b.find(".")+5], "pulgadas"

10 cm equivale a 3.93700787402 pulgadas
En resumen, conviertes el número a string, buscas la posición del punto, y sólo imprimes hasta la cuarta posición después del punto.

Un saludo.

Última edición por Hazuki; 10/09/2011 a las 19:58 Razón: Pequeño error ortográfico
  #3 (permalink)  
Antiguo 10/09/2011, 20:04
 
Fecha de Ingreso: noviembre-2010
Mensajes: 53
Antigüedad: 14 años
Puntos: 2
Respuesta: Limitar la cantidad de decimales

Del modo que me dices me lanza error:

Cita:
AttributeError: 'float' object has no attribute 'find'
Por cierto, recien comienzo en Python, y no entendi nada del cambio que hiciste xD, hay algun nombre oficial a lo que hiciste...para asi poder buscarlo ;)

Salu2!
__________________
"Porque nada se...
quiero saberlo todo"
  #4 (permalink)  
Antiguo 10/09/2011, 20:18
Avatar de Hazuki  
Fecha de Ingreso: mayo-2011
Mensajes: 34
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Limitar la cantidad de decimales

El error es porque estás haciéndolo directamente desde el número, fíjate que al asignar la variable 'b' la englobé con la función 'str', la cual convierte (o intenta convertir) un determinado dato a una string. Seguramente se te pasó por alto ese dato.

Luego, lo que hice fue extraer una subcadena ("substring") desde la original. Básicamente el funcionamiento es:

Código:
var = "supercalifragilisticoespialidoso"
print var[0:5]
print var[28:]
print var[:3]
El primer 'print' devuelve "super", porque es lo que está desde el índice o caracter 0 (cero) y el 5. El segundo devuelve "doso", porque es lo que está entre el índice 28 y el último (lo que ocurre al omitir un número), el tercero devuelve "sup" porque cuenta desde el principio hasta el tercer caracter.

Luego...
Código:
b[:b.find(".")+5]
Como ves, busca desde el principio de 'b' hasta la posición del primer punto (b.find(".")) más 5. Ponemos 5 y no 4 porque debemos saltarnos también el punto.

Saludos.

P.D.: el testamento lo puse porque estoy aburrido xD
  #5 (permalink)  
Antiguo 10/09/2011, 21:01
 
Fecha de Ingreso: noviembre-2010
Mensajes: 53
Antigüedad: 14 años
Puntos: 2
Respuesta: Limitar la cantidad de decimales

Muchas gracias, me quedo clarisimo :D
Y tienes razon, se me paso eso de convertirlo a un string...

Por cierto, hay forma de que al ingresar el input, automaticamente se convierta a string?

EDIT:
Ya vi el inconveniente de tomarlo desde el principio como un string, de ese modo, no se puede operar...

Salu2!
__________________
"Porque nada se...
quiero saberlo todo"

Última edición por Shephiroth; 10/09/2011 a las 21:24
  #6 (permalink)  
Antiguo 10/09/2011, 23:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Limitar la cantidad de decimales

Puedes usar el formateo de cadenas estilo C.

Ejemplo:
Código Python:
Ver original
  1. numero = raw_input("Dame un numero: ")
  2. numero = float(numero)
  3. print "%.2f" % (numero, )
  4. print "%.*f" % (2, numero)

PD: Nunca uses input en python 2.x ya que pueden inyectarte código malicioso.
  #7 (permalink)  
Antiguo 10/09/2011, 23:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 53
Antigüedad: 14 años
Puntos: 2
Respuesta: Limitar la cantidad de decimales

razpeitia respecto a no usar el input, entonces debiera ser asi:
Código Python:
Ver original
  1. a = raw_input ("Ingrese centimetros")
  2. b = float(a)
  3. c = str(b/2.54)
  4. print a,"cm equivale a",c[:c.find(".")+4],"pulgadas"

Y sobre tu codigo, lo mismo que le dije a Hazuki, no entendi nada el cambio, hay algun nombre oficial a eso para poder buscarlo?
Aqui solo reemplaze por obviedad xD

Código Python:
Ver original
  1. a = raw_input("Dame un numero: ")
  2. b = float(a)
  3. c = b/2.54
  4. print "%.2f" % (c, )
  5. print "%.*f" % (2, c)


Gracias! ;)
__________________
"Porque nada se...
quiero saberlo todo"

Última edición por Shephiroth; 10/09/2011 a las 23:44
  #8 (permalink)  
Antiguo 12/09/2011, 08:31
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Limitar la cantidad de decimales

Formato de cadenas: http://docs.python.org/library/stdty...ing-operations

Rebanadas (slices): http://docs.python.org/library/stdty...-buffer-xrange


Saludos.

Etiquetas: cantidad, limitar, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:45.