繁体   English   中英

math.round vs parseInt

[英]math.round vs parseInt

有一个快速的JS问题。 math.round和parseInt有什么区别?

我制作了一个JS脚本来总结提示数字的反转:

    <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>

它使用parseInt。 如果我想makeit使用math.round,还有什么我需要做的,它知道相应地限制小数位数吗?

换句话说,math.round必须以某种方式格式化吗?

这两个功能真的很不一样。

parseInt()从字符串中提取数字,例如

parseInt('1.5')
// => 1

Math.round()将数字四舍五入到最接近的整数:

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

parseInt()可以通过删除额外的文本来获取其编号,例如:

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

但是,Math.round不会:

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

您应该使用parseFloatMath.round因为您正在从用户那里获得输入:

var number = parseFloat(prompt('Enter number:'));
var rounded = Math.round(number);

Math.round会将数字四舍五入到最接近的整数。 parseInt会向您保证该值是一个数字

所以你需要的是这样的:

number = parseInt(number);

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

这将确保您使用了一个数字

Math.round需要一个数字, parseInt需要一个字符串。

使用parseInt('12345', 10)解析基于10的数字。

http://www.javascripter.net/faq/convert2.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM