如何在JavaScript中将字符串转换为整数?
当你使用 parseInt 将一个科学计数法表示的浮点数转换为整数时,请小心!例如:
parseInt("5.6e-14")
会导致
5
替代
0
parseInt
无法正确处理浮点数。在这种情况下,应使用 parseFloat
进行处理。 - benekastah将一个字符串转换为整数,我建议使用parseFloat而不是parseInt。原因如下:
使用parseFloat:
parseFloat('2.34cms') //Output: 2.34
parseFloat('12.5') //Output: 12.5
parseFloat('012.3') //Output: 12.3
使用 parseInt:
parseInt('2.34cms') //Output: 2
parseInt('12.5') //Output: 12
parseInt('012.3') //Output: 12
如果您注意到parseInt会丢弃小数点后面的值,而parseFloat允许您使用浮点数,因此如果您想保留小数点后面的值,则更适合使用parseFloat。只有在确定需要整数值时才使用parseInt。
+(数字字符串)
代替parseInt(数字字符串)
。+("21")
会返回整数21,就像parseInt("21")
一样。+
周围加上一个额外的括号即可。 - NiCk NewmanparseInt
那样明确。一个常见的实现是 const myNumber = +myNumberAsAString
,乍一看像是标准的 +=
或 =+
运算符。而且,如果使用不当,可能会导致连接错误。这个解决方案基于当没有提供数字时,0 被假定为左侧的事实。 - Storm MullerparseInt
更简洁,再加一个字符可以使它更清晰:0 + "..."
。这样可以更容易地避免误解结果,但仍需要一些思考。所以还是有些不妥。清晰的编码就是说出你的意思:使用parseInt
。 - ToolmakerSteve另外顺便提一下:MooTools 有一个 toInt() 函数,用于将任何原生字符串(或浮点数(或整数))转换为整数。
"2".toInt() // 2
"2px".toInt() // 2
2.toInt() // 2
2..toInt();
第一个点将结束 Number
文字的表示形式,而第二个点是属性访问器。 - Christian C. Salvadó在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中将字符串转换为数字的优雅方式。
尝试使用str - 0
将string
转换为number
。
> str = '0'
> str - 0
0
> str = '123'
> str - 0
123
> str = '-12'
> str - 0
-12
> str = 'asdf'
> str - 0
NaN
> str = '12.34'
> str - 0
12.34
以下是两个链接,可以比较多种将字符串转换为整数的性能:
>
提示符来自Chrome控制台。 - zangw这是最简单的解决方案
let myNumber = "123" | 0;
更简单的解决方案
let myNumber = +"123";
function parseInteger(value) {
if(value === '') return NaN;
const number = Number(value);
return Number.isInteger(number) ? number : NaN;
}
parseInteger("4") // 4
parseInteger("5aaa") // NaN
parseInteger("4.33333") // NaN
parseInteger("aaa"); // NaN
parseInteger
而不是 parseNumber
。我猜每个解决方案都是一种变通方法,因为 JS 不支持整数和浮点数作为单独的类型。如果“非数字”会产生误导,我们可以返回 null
。 - Michał Knapik+
。const strTen = "10"
const numTen = +strTen // string to number conversion
console.log(typeof strTen) // string
console.log(typeof numTen) // number
+numStr
使用方便,性能比其他方法更好console.log(+'123.45') // => 123.45
parseInt(numStr)
用于整数parseFloat(numStr)
用于整数和小数console.log(parseInt('123.456')) // => 123
console.log(parseFloat('123')) // => 123
数学函数如round(numStr), floor(numStr), ceil(numStr)
用于整数。
Number(numStr)
适用于整数和小数。
console.log(Math.floor('123')) // => 123
console.log(Math.round('123.456')) // => 123
console.log(Math.ceil('123.454')) // => 124
console.log(Number('123.123')) // => 123.123
所有基本的一元运算符,包括+numStr
、numStr-0
、1*numStr
、numStr*1
和numStr/1
所有运算符都支持整数和小数
要注意numStr+0
。它返回一个字符串。
console.log(+'123') // => 123
console.log('002'-0) // => 2
console.log(1*'5') // => 5
console.log('7.7'*1) // => 7.7
console.log(3.3/1) // =>3.3
console.log('123.123'+0, typeof ('123.123' + 0)) // => 123.1230 string
~~numStr
或 左移0位, numStr<<0
console.log(~~'123') // => 123
console.log('0123'<<0) // => 123
console.log(~~'123.123') // => 123
console.log('123.123'<<0) // => 123
// Parsing
console.log(parseInt('123.456')) // => 123
console.log(parseFloat('123')) // => 123
// Function
console.log(Math.floor('123')) // => 123
console.log(Math.round('123.456')) // => 123
console.log(Math.ceil('123.454')) // => 124
console.log(Number('123.123')) // => 123.123
// Unary
console.log(+'123') // => 123
console.log('002'-0) // => 2
console.log(1*'5') // => 5
console.log('7.7'*1) // => 7.7
console.log(3.3/1) // => 3.3
console.log('123.123'+0, typeof ('123.123'+0)) // => 123.1230 string
// Bitwise
console.log(~~'123') // => 123
console.log('0123'<<0) // => 123
console.log(~~'123.123') // => 123
console.log('123.123'<<0) // => 123
fr-FR
中,123456789.123
为123 456 789,12
)请参见此讨论。 - vsync