将JavaScript数字验证为Java int的正确方法是什么?
–2147483648 < n < 2147483647
IsNumeric(2147483648) --> true: which is > int
parseInt("2147483648") --> 2147483648 : which is > int
假设Java中的整数范围实际上是"–2147483648<=n<=21474833647",则表达式((+a)|0) == a
将按指定方式工作。
- CCD_ 2将表达式a评估为数字
|0
将数字转换为32位整数
当a
不能用32位整数精确表示时,比较将失败。
只需在if?
var number = 1234567;
if (Number.isInteger(number)) && number > -2147483648 && number < 2147483647)
{
console.log("It is a valid integer!");
}
作为函数:
function isValidInt32(number){
return Number.isInteger(number) && number > -2147483648 && number < 2147483647;
}
对于浮点值,如果我们想要一个整数,但允许一个以"结尾的值;。0〃:
isInt32(state) {
if(!(/^([+-]?[1-9]d*|0).[0]$/.test(state))
&& !(/^([+-]?[1-9]d*|0)$/.test(state))) {
return false;
}
const view = new DataView(new ArrayBuffer(32));
view.setInt32(1, state);
return Number.parseInt(state) === view.getInt32(1);
}