检查 JavaScript 中的数字是否在 Java 中的 int 范围内 (–2147483648 < n < 2147483647)



将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);
}

相关内容

最新更新