Ver Mensaje Individual
  #24 (permalink)  
Antiguo 08/09/2015, 13:04
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
Respuesta: Problema con decimales.

Cita:
Iniciado por Tachikomaia Ver Mensaje

Parece lo mismo, pero me es complicado pensar lo tuyo, a ver:
ConvertirADecimal(ConvertirAEntero(NúmeroDecimal * 10^n))/10^n
En efecto, la fórmula es parecida a la tuya. Pero no exactamente igual.

La verdadera magia pasa al convertir el número decimal a entero. Al hacerlo eliminas todos los decimales indeseados. Si quieres solo un decimal, pero tienes el número 4,9999999, y lo quieres dejar a 4,9 y no tener ninguna duda con la precisión de que si es realmente 4,9 o 5 o 4,99 o 4,91... todas esas dudas te las quitas al hacer esas transformaciones. Porque ese 4,9 pasa a ser 49 exacto, sin decimal ninguno, sin duda alguna de si es 49 o 49.999 porque eso es imposible que sea, ya que tiene que ser el número entero y no caben decimales.

Y como un número entero no puede tener decimales no puede tener tampoco ese problema que tienes. Y una vez eliminado ese problema de que si es realmente 0.4 o 0.49 porque ya estás seguro de que lo que tienes son los dígitos exactos que quieres... pues lo devuelves a decimal y lo divides. Y al hacerlo ya ese decimal no coje más decimales por sorpresa. El 0.49 no se convierte en 0.49999 ni en 0.48999 ni nada parecido. 49 exactos / 100=0.49 y punto.

Desconozco si todos los lenguajes distinguen entre esos tipos de datos, y pueden definir enteros o decimales y restringir de esa manera si tienen decimales o no. Java si tiene esta distinción entre esos 2 tipos de datos. Pero no te se decir sobre ningún otro lenguaje más.