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

De momento tengo:
Código:
Act = 0;
ActDec = 1;
do {
    Act = (Act*(Math.pow(10, ActDec))+1)/(Math.pow(10, ActDec));
    trace (Act);
} while (Act<0.9);
if (Act > 0.9) {
    trace ("Sí");
}
O sea sí, decidí convertir a enteros antes de realizar las operaciones, pero igual falla.

ActDec marca cuánto se suma en realidad. Antes se sumaba 0.1, acá también, pero con este sistema intenté que cualquier decimal pudiera sumarse como si fuese entero. Los números que se usan dependen de cómo se configure una pantalla, algunas como ActDec=0, sumarle 1 y pretender que sea < 0.9 no tienen sentido, pero eso sería un error de cómo o para qué se usa el sistema, no un error del sistema en sí. Lo que hace en este caso es multiplicar Act*10, sumarle 1, y luego dividir entre 10. Entonces es como si sumara 0.1. Para sumar 0.01 o cualquier número con 2 decimales, lo de multiplicar y dividir entre 10 se haría 2 veces. Sí, ActDec marca la cantidad de decimales y de veces que se repetirá esa operación.
Funciona mejor parece, cuando termina el do while dice que Act es 0.9, pero con el if al final me dice que en realidad es mayor que eso. Lo bueno es que, aparentemente, es tan poco mayor, que no lo toma como 1, o sea ha mejorado, pero la idea es lograr más exactitud.

Math.pow (X, Y) eleva X Y veces. Potencia.

Trace simplemente muestra en pantalla algo que se le indique.

Profesor_Falken:
Mi Flash no tiene toPrecision, muestro a todos lo que tiene a ver si lo entienden porque yo mucho no, por ejemplo "valueOf".