.NET 8.0 支持 128 位整数,如 Int128 和 Uint128(here),
这如何在浏览器中处理?
[更新]
我主要考虑两件事:
一,这些如何可能在浏览器中通过算术计算来处理(我早期的项目之一涉及浏览器中 JS 的统计分析),以及
第二,如果 .NET 提供这些数据类型,目的是什么以及最常见的相邻构建块/技术可以处理它们。
Javascript 至少有两种适用于此的内置类型。如果您可以接受精度损失,那么您可以使用
Number
(JavaScript Number
类型是双精度 64 位二进制格式 IEEE 754 值,就像 Java 或 C# 中的 double ),否则您需要考虑使用 BigInt
或某些自定义类型。
Number
和BigInt
之间的区别:
<h1>JavaScript Numbers</h1>
<h2>Integer Precision</h2>
<p>Integers (numbers without a period or exponent notation) are accurate up to 15 digits:</p>
<p id="demo"></p>
<script>
let x = 999999999999999;
let y = 9999999999999999;
let z = 340282366920938463463374607431768211455;
let zb = BigInt("340282366920938463463374607431768211455");
document.getElementById("demo").innerHTML = x + "<br>" + y + "<br>" + z + "<br>" + zb;
</script>
JSON 对于数字有单一的“直接”节点类型,并且不区分数字类型,默认情况下
JSON.parse
将使用 Number
,因此在大数字的情况下您可能会遇到上述精度损失,在这种情况下您可以查看使用一些解决方法,例如 json-bigint
库或来自 此答案 的解决方案。