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

Check if numbers in JavaScript is in the range of int in Java (–2147483648 < n < 2147483647)

本文关键字:lt 2147483648 21474836 范围内 int JavaScript 数字 是否 中的 Java 检查      更新时间:2023-09-26

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