如何在JavaScript中将字符串转换为整数?
#1楼
尝试parseInt。
var number = parseInt("10", 10); //number will have value of 10.
#2楼
尝试parseInt函数:
var number = parseInt("10");
但有一个问题。 如果尝试使用parseInt函数转换“ 010”,它将检测为八进制数字,并返回数字8。因此,您需要指定一个基数(从2到36)。 在这种情况下,以10为底。
parseInt(string, radix)
例:
var result = parseInt("010", 10) == 10; // Returns true
var result = parseInt("010") == 10; // Returns false
请注意, parseInt
在解析任何有效内容后会忽略错误数据。
该GUID将解析为51:
var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true
#3楼
最简单的方法是使用本机Number
函数:
var x = Number("1000")
如果这对您不起作用,则有parseInt , 一元plus , 带有floor的parseFloat和Math.round方法。
parseInt:
var x = parseInt("1000", 10); // you want to use radix 10
// so you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])
一元加号,如果您的字符串已经是整数形式:
var x = +"1000";
如果您的字符串是浮点数或可能是浮点数,并且您想要一个整数:
var x = Math.floor("1000.01"); //floor automatically converts string to number
或者,如果您要多次使用Math.floor:
var floor = Math.floor;
var x = floor("1000.01");
如果您是在调用parseInt时忘记将基数放入的类型,则可以使用parseFloat并根据需要将其四舍五入。 在这里我用地板。
var floor = Math.floor;
var x = floor(parseFloat("1000.01"));
有趣的是,Math.round(例如Math.floor)将进行字符串到数字的转换,因此,如果您想将数字四舍五入(或者如果字符串中有整数),这是一个很好的方法,也许是我的最爱:
var round = Math.round;
var x = round("1000"); //equivalent to round("1000",0)
#4楼
另请注意:Mootools具有函数toInt(),该函数可用于任何本机字符串(或浮点数(或整数))。
"2".toInt() // 2
"2px".toInt() // 2
2.toInt() // 2
#5楼
我在这里发布了错误的答案,对不起。 固定。
这是一个老问题,但是我喜欢这个技巧:
~~"2.123"; //2
~~"5"; //5
双按位负数会在小数点后删除所有内容,并将其转换为数字格式。 有人告诉我它比调用函数之类的要快,但是我并不完全相信。
编辑:我刚刚在这里看到的另一种方法(关于javascript >>>运算符的问题,这是一个零填充右移),它表明使用此运算符将数字移位0会将数字转换为uint32 ,如果您也希望它没有签名 。 同样,这将转换为无符号整数 ,如果您使用带符号数字,则可能导致奇怪的行为。
"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3138450