将带有 long 变量的 java 函数转换为 NodeJS
Convert java function with long variable to NodeJS
在 Java 函数中有“long”变量。
public class LongToIntExample1{
public static void main(String args[]){
long l=2672558412L;
int i=(int)l;
System.out.println(i);
}
}
=> Output: -1622408884
我尝试使用 NodeJS 函数如下,但输出错误:
module.exports.LongToIntExample1 = () => {
var l = 2672558412n;
var i = parseInt(l);
console.log(i);
}
=> Output: 2672558412
如何将 NodeJS 函数编写为具有相同输出的 Java 函数?
如果您阅读此答案: Java 将包裹 long
超过 Integer.MAX_VALUE
的部分,并且该值将变为负值。
显然在 NodeJS 中情况并非如此
由于 long 大于 int,您尝试重现的行为实际上是 Java 实现不安全的副产品,即不检查 long 值是否小于 Integer.MAX_VALUE
就我个人而言,我不会在我的程序中依赖这样的机制
我们可以使用 built-in Int32Array 将数字转换为 32 位有符号整数,如下所示:
function LongToIntExample1(num) {
return (new Int32Array([num]))[0];
}
console.log(LongToIntExample1(2672558412))
console.log(LongToIntExample1(2147483647))
在 Java 函数中有“long”变量。
public class LongToIntExample1{
public static void main(String args[]){
long l=2672558412L;
int i=(int)l;
System.out.println(i);
}
}
=> Output: -1622408884
我尝试使用 NodeJS 函数如下,但输出错误:
module.exports.LongToIntExample1 = () => {
var l = 2672558412n;
var i = parseInt(l);
console.log(i);
}
=> Output: 2672558412
如何将 NodeJS 函数编写为具有相同输出的 Java 函数?
如果您阅读此答案: Java 将包裹 long
超过 Integer.MAX_VALUE
的部分,并且该值将变为负值。
显然在 NodeJS 中情况并非如此
由于 long 大于 int,您尝试重现的行为实际上是 Java 实现不安全的副产品,即不检查 long 值是否小于 Integer.MAX_VALUE
就我个人而言,我不会在我的程序中依赖这样的机制
我们可以使用 built-in Int32Array 将数字转换为 32 位有符号整数,如下所示:
function LongToIntExample1(num) {
return (new Int32Array([num]))[0];
}
console.log(LongToIntExample1(2672558412))
console.log(LongToIntExample1(2147483647))