de matemáticas.ronda vs parseInt

Tener una rápida JS pregunta. ¿Cuál es la diferencia entre las matemáticas.ronda y parseInt?

Hice un script JS a la suma de los inversos de le pida números:

    <script type="text/javascript">
    var numRep = prompt("How many repetitions would you like to run?");
    var sum = 0; 
    var count = 0;
    var i = 1;     //variable i becomes 1


    while (i <= numRep)  {// repeat 5 times

       var number = prompt("Please enter a non zero integer");

       if(number==0){
         document.write("Invalid Input <br>");
 count++;
       }
       else{
          document.write("The inverse is: " + 1/number + "<br>");
          sum = sum + (1/parseInt(number));  //add number to the sum
       }

       i++; //increase i by 1
    }

    if (sum==0){
    document.write("You did not enter valid input");}
    else { document.write("The sum of the inverses is: " + sum);  //display sum
    }
    </script></body></html>

y utiliza parseInt. Si quería hazlo usar las matemáticas.ronda, ¿hay algo más que necesita hacer para que sepa a limitar el número de lugares decimales en consecuencia?

En otras palabras, ¿las matemáticas.ronda tiene que ser formateado de una determinada manera?

  • Estás comparando manzanas con naranjas. parseInt convierte una cadena a un entero, mientras que Math.round() – bien – redondea un número de punto flotante.
  • pero la cosa con parseInt es que parece que para siempre los números redondos, como fractors por ejemplo, a un número razonable de caracteres, mientras que en matemáticas.ronda parece ronda sólo a números enteros
  • Nota: Cuando se trata de redondeo, parseInt es significativamente más lento que el de las Matemáticas.ronda: jsperf.com/math-floor-vs-math-round-vs-parseint/55
  • Math.floor(float) es más rápido y numéricamente hacer lo mismo tham parseInt(float). La pregunta es propenso a errores, la equivalencia es con el suelo, no con la ronda.
InformationsquelleAutor Chris | 2011-11-17

3 Kommentare

  1. 39

    Las dos funciones son realmente muy diferentes.

    parseInt() extrae un número de una cadena, por ejemplo,

    parseInt('1.5')
    //=> 1

    Math.round() redondea el número al número entero más cercano:

    Math.round('1.5')
    //=> 2

    parseInt() puede obtener su número mediante la eliminación de un texto, por ejemplo:

    parseInt('12foo')
    //=> 12

    Sin Embargo, Las Matemáticas.ronda no:

    Math.round('12foo')
    //=> NaN

    Usted probablemente debería usar parseFloat y Math.round puesto que usted está consiguiendo la entrada del usuario:

    var number = parseFloat(prompt('Enter number:'));
    var rounded = Math.round(number);
    • Es allí una manera de conseguir las Matemáticas.ronda a ronda, digamos 3 decimales?
    • La única manera que conozco de hacer eso es trampa: Math.round(1.23456 * 1000) / 1000
    • no se olvide de proporcionar un número de base en parseInt
    • Si queremos la vuelta de la entrada, necesitamos utilizar parseFloat, no parseInt. Qué bueno es el redondeo de algo que se ha convertido a int?
    • Actualizado para utilizar parseFloat en el último ejemplo.
  2. 3

    Math.round se redondea el número al entero más cercano. parseInt le asegurará de que el valor es un número

    Así que lo que necesitas es algo como esto:

    number = parseInt(number);
    
    if ( isNan(number) || number == 0 ){
        document.write("Invalid Input <br>");
        count++;
    }

    Esto le asegurará de que el uso ha puesto en un número

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea