如何在JavaScript中将字符串转换为整数?
当前回答
将数字的乘法与各自的十次幂相加:
即:123=100+20+3=1100+2+10+31=1*(10^2)+2*(10^1)+3*(10^0)
function atoi(array) {
// Use exp as (length - i), other option would be
// to reverse the array.
// Multiply a[i] * 10^(exp) and sum
let sum = 0;
for (let i = 0; i < array.length; i++) {
let exp = array.length - (i+1);
let value = array[i] * Math.pow(10, exp);
sum += value;
}
return sum;
}
其他回答
JavaScript中有许多方法可以将字符串转换为数值。。。所有这些都简单方便。选择适合您的方式:
var num = Number("999.5"); //999.5
var num = parseInt("999.5", 10); //999
var num = parseFloat("999.5"); //999.5
var num = +"999.5"; //999.5
此外,任何数学运算都会将它们转换为数字,例如。。。
var num = "999.5" / 1; //999.5
var num = "999.5" * 1; //999.5
var num = "999.5" - 1 + 1; //999.5
var num = "999.5" - 0; //999.5
var num = Math.floor("999.5"); //999
var num = ~~"999.5"; //999
我更喜欢的方式是使用+符号,这是在JavaScript中将字符串转换为数字的优雅方式。
在JavaScript中,您可以执行以下操作:
解析Int
parseInt("10.5") // Returns 10
与1相乘
var s = "10";
s = s*1; // Returns 10
使用一元运算符(+)
var s = "10";
s = +s; // Returns 10
使用按位运算符
(注:在2140000000之后开始破裂。示例:~~“2150000000”=-214967296)
var s = "10.5";
s = ~~s; // Returns 10
使用Math.floor()或Math.ceil()
var s = "10";
s = Math.floor(s) || Math.ceil(s); // Returns 10
数字()
Number(" 200.12 ") // Returns 200.12
Number("200.12") // Returns 200.12
Number("200") // Returns 200
parseInt()
parseInt(" 200.12 ") // Return 200
parseInt("200.12") // Return 200
parseInt("200") // Return 200
parseInt("Text information") // Returns NaN
parseFloat()
它将返回第一个数字
parseFloat("200 400") // Returns 200
parseFloat("200") // Returns 200
parseFloat("Text information") // Returns NaN
parseFloat("200.10") // Return 200.10
数学地板()
将数字舍入为最接近的整数
Math.floor(" 200.12 ") // Return 200
Math.floor("200.12") // Return 200
Math.floor("200") // Return 200
我们可以使用+(stringOfNumber)而不是parseInt(stringOfNumber)。
示例:+(“21”)返回int值为21,类似于parseInt(“21)。
我们也可以使用这个一元“+”运算符来解析浮点数。。。
尝试parseInt。
var number = parseInt("10", 10); //number will have value of 10.