.NET 数字数据类型可以存储的最大位数是多少

发布于 2024-10-04 12:43:44 字数 308 浏览 1 评论 0原文

这只是出于好奇。我们知道,对于密码学应用,两个大素数(超过 100 位)相乘即可形成公钥的一部分。那么哪种 Microsoft.NET 数字类型可以存储最大的数百位质数?换句话说,哪种数字数据类型可以容纳 .NET 中最大的整数?据我了解,使用 8 个字节的 System.Double 可以存储最大值 (1.79769313486232 × 10^308) - 这可能可以容纳 309 位数字。但是,System.Decimal使用16个字节,最多可以存储79228162514264337593543950335,这只有29个十进制数字(比Double更少的数字?)

谢谢, 查克。

This is just out of curiosity. We know that for cryptology applications two large prime numbers (of more than 100 digits) are multiplied to form a part of the public key. So which Microsoft.NET number type can store the largest prime numbers, of hundreds of digits ? In other words which numeric data type can accommodate the largest whole number in .NET ? I understand that System.Double which uses 8 bytes, can store a max value of (1.79769313486232 × 10^308) - this probably accommodates 309 digits. However, System.Decimal uses 16 bytes and can store a max of 79228162514264337593543950335 which is only 29 decimal digits (lesser digits than Double ?)

Thanks,
Chak.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南城旧梦 2024-10-11 12:43:44

如果您使用的是 .NET 4,请查看 System.Numerics.BigInteger 可以存储任意大的整数。

double 确实存储 309 位数字 - 它的范围很宽,但它只有 15-16 位精度。换句话说,如果您将较大的 long 值(例如那些略低于 long.MaxValue 的值)转换为 double 并返回,您将丢失信息。请参阅我关于 binary十进制 浮点类型了解更多信息。

If you're using .NET 4, have a look at System.Numerics.BigInteger which can store arbitrarily large integers.

double does not store 309 digits - it has a wide range, but it only has 15-16 digits of precision. In other words, if you convert large long values (e.g. those just below long.MaxValue) to double and back you'll lose information. See my articles on binary and decimal floating point types for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文