.NET 8.0:JSON 中的 Int128 和 Uint128 等效项?

.NET 8.0: Int128 and Uint128 equivalent in JSON?

提问人:Abhi 提问时间:9/25/2023 最后编辑:Guru StronAbhi 更新时间:9/28/2023 访问量:36

问:

使用 .NET 8.0 支持 128 位整数作为 Int128 和 Uint128(此处),

这怎么可能在浏览器中处理?

[更新]

我主要有两件事:

第一,如何在浏览器中的算术计算中处理这些问题(我早期的一个项目涉及浏览器中 JS 的统计分析),以及

第二,如果 .NET 提供这些数据类型,其目的是什么,以及最常见的相邻构建块/技术可以处理它们。

JSON 浏览器 int128 net-8.0

评论

0赞 Guru Stron 9/26/2023
你到底有什么问题?JSON“等价物”与任何其他数字相同 - JSON 具有单个节点类型来表示数字 - 数字(如果需要,当然可以使用字符串)。
0赞 Abhi 9/26/2023
@GuruStron 感谢您的评论。我已经更新了我的问题。

答:

1赞 Guru Stron 9/28/2023 #1

Javascript 至少有两种内置类型适用于此处。如果你对精度损失感到满意,那么你可以使用 Number(JavaScript 类型是双精度 64 位二进制格式 IEEE 754 值,就像 Java 或 C# 中的 double 一样),否则你需要考虑使用 BigInt 或一些自定义类型。Number

和之间的区别:NumberBigInt

<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-bigint库或此答案中的解决方案。JSON.parseNumber