Cita:
Iniciado por Tachikomaia
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.