Gha*_*agh 1 javascript c# uint
我正在尝试在 JavaScript 中将长数字转换为单位,但是我得到的结果与我在 C# 中已有的结果不同。
C#:
var tt=431430059159441001;
var t=(UInt32)tt;//1570754153
Run Code Online (Sandbox Code Playgroud)
js:
var arr =new Uint32Array(1);
arr[0]=431430059159441001;//1570754176
Run Code Online (Sandbox Code Playgroud)
那么任何人都可以解释为什么存在差异。
这是因为您的数字文字是 64 位整数,并且无法用 JavaScript 常规数字类型表示。number类型为64位精度浮点数,只能表示最大到 左右的整数值2**53。所以我建议不要使用这么大的数字文字。
JavaScript 世界的最新发展是BigInt。如果您有能力使用它们,那么您的代码很容易修复:
var t = Number(BigInt.asUintN(32, 431430059159441001n));
console.log(t); // 1570754153Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3434 次 |
| 最近记录: |