Ver Mensaje Individual
  #19 (permalink)  
Antiguo 07/09/2015, 18:20
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con decimales.

Kritik, podrías decirme si tu código es diferente a esto:
Código a:
Ver original
  1. Act = 0;
  2. ActDec = 1;
  3. do {
  4.     Precision = Math.pow(10, ActDec);
  5.     Act = Math.round(Act*Precision+1)/Precision;
  6.     trace (Act);
  7. } while (Act<0.9);
  8. if (Act>0.9) {
  9.     trace ("Sí");
  10. }

Parece lo mismo, pero me es complicado pensar lo tuyo, a ver:
ConvertirADecimal(ConvertirAEntero(NúmeroDecimal * 10^n))/10^n

Primero elevas 10 a la n, es lo que hago con la variable Precision (ActDec sería n).
Luego multiplicas eso por el número decimal en cuestión, es también lo que hago.
Después lo conviertes a entero. Yo antes le sumo 1 porque se lo debo sumar, pero también lo convierto en entero después, no hay diferencia. La diferencia podría ser la forma conque se convierte en entero (redondear hacia abajo, hacia arriba, etc), o que usas un programa en que se define el tipo de variable (yo no, es automático), pero en definitiva es lo mismo.
Posteriormente conviertes a decimal, cosa que supuestamente yo no requiero hacer.
Por último divides entre 10 a la n, lo mismo que hago, pero a mí la división me da mal, por ejemplo si es 9 me lo deja en 0.89999 o algo por el estilo, el caso es que al final del bucle dice que es > 0.9.
Fijate este mensaje:
http://www.forosdelweb.com/f14/probl...9/#post4740285