用javascript将字符串转换为数字

convert string to a number in javascript

本文关键字:数字 转换 字符串 javascript      更新时间:2024-01-21

我想解析一个包含经度和纬度的用户输入。我想做的是将字符串强制为数字,保留其符号和小数位数。但我想做的是当用户的输入无效时显示一条消息。我应该遵循中的哪一个

parseFloat(x)

第二

new Number(x)

第三

~~x

第四

+x

如果必须在两者之间进行选择,我会使用Number(x),因为它不允许尾随垃圾。(好吧,它"允许"它,但结果是NaN。)

也就是说,Number("123.45balloon")NaN,但parseFloat("123.45balloon")123.45(作为数字)。

正如Kling先生所指出的,哪一个"更好"取决于你。

编辑—啊,你又加了+x~~x。正如我在评论中所写的,+x相当于使用Number()构造函数,但由于+运算符的语法灵活性,我认为这有点风险。也就是说,剪切粘贴很容易引入错误。如果您知道无论如何都需要一个整数(32位整数),那么~~x形式是很好的。然而,对于lat/long来说,这可能不是你想要的。

第一个更好。这是明确的,也是正确的。你说你想解析浮点数。~~x会给你一个整数。

要测试input是否为数字,请使用以下命令:

function isNumeric(obj){
    return !isNaN( parseFloat(obj) ) && isFinite( obj );
}

要将String转换为Number,请使用+,这是最快的方法:

一元+运算符还可以将其操作数类型转换为数字,因为它不进行任何额外的数学运算,所以它是将字符串类型转换为数值的最快方法

所以总的来说,你可能需要这个:

if(!isNumeric(inputValue)){
    alert('invalid number');
}else{
    var num = +inputValue;
}

isNumeric借用自jQuery

这是我要编写的代码,用于重复输入,直到获得正确的输入。

var d;
do {
    d = prompt("Enter a number");
    d = new Number(d);
} while( isNaN(d) );
document.write( d );

注意:如果任何字符是非数字字符,则new Number(d)将始终给出NaN,而parseFloat(d)将忽略后面的无效字符。