这是由语言定义的吗?是否有定义的最大值?在不同的浏览器中是不同的?
function intFromBytes( x ){
var val = 0;
for (var i = 0; i < x.length; ++i) {
val += x[i];
if (i < x.length-1) {
val = val << 8;
}
}
return val;
}
function getInt64Bytes( x ){
var bytes = [];
var i = 8;
do {
bytes[--i] = x & (255);
x = x>>8;
} while ( i )
return bytes;
}
Run Code Online (Sandbox Code Playgroud)
我试图将javascript编号转换为字节数组,然后返回到数字.但是,上述功能会产生非常大数量的错误输出.
var array = getInt64Bytes(23423423);
var value = intFromBytes(array);
console.log(value); //Prints 23423423 - correct …Run Code Online (Sandbox Code Playgroud) 我的一些数据是64位整数.我想将这些发送到页面上运行的JavaScript程序.
但是,据我所知,大多数JavaScript实现中的整数都是32位有符号数.
我的两个选择似乎是:
选项(1)并不完美,但选项(2)似乎远不那么完美(数据丢失).
你是怎么处理这种情况的?
任何人有任何关于如何在Node.js中对64位整数执行算术的建议?node-int64包似乎不支持它.
我有一个64位无符号整数,我需要在PostgreSQL中表示.我把它分解为两个32位无符号整数,high并且low.为了让Postgres的接受它,我需要转换high,并low以代表符号的64位整数的字符串.
如何将两个32位无符号整数转换为以十进制表示的有符号64位整数的字符串?
如何通过 Objective-C SDK 在 Firestore 中存储数字的精确值?
例如,如果我手动创建值为“15.9”的“abv”字段,它会显示确切的值。
但是,如果我从 Objective-C API 将 Firestore 中的值更新为NSNumber,@(15.9)我会在 Firestore 文档中获得该近似值。
NSDictionary *data = @{@"abv": @(15.9)};
[documentReference updateData:data completion:^(NSError * _Nullable error) {
}];
Run Code Online (Sandbox Code Playgroud)
这是另一个例子。61.99我尝试存储Objective-C 应用程序中的值。61.99我可以从网络控制台手动编辑金额。我不明白为什么我可以从 Web 控制台手动输入精确的十进制值,但不能从 Objective-C API 手动输入。
javascript ×5
node.js ×2
64-bit ×1
browser ×1
firebase ×1
ios ×1
json ×1
math ×1
objective-c ×1
postgresql ×1