Decimal 数据类型如何在精度仅为 29 位的情况下计算出如此长的范围

发布于 2024-11-24 21:17:22 字数 68 浏览 0 评论 0原文

Decimal 进行如此大范围(1.7E+308)计算的实际机制是什么,而它的精度只有 29 位,而且只需要 8 个字节。

what is the actual mechanism by which Decimal does calculations upto such a big range(1.7E+308) while it's precision is only 29 digits and it also takes only 8 Bytes.

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

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

发布评论

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

评论(1

零度℉ 2024-12-01 21:17:22

事实并非如此 - 十进制最多只能使用 29 位最大值为 79,228,162,514,264,337,593,543,950,335。

然而,double 的有效数字较少,但范围却大得多。它通过对较大数字变得不太精确来实现这一点。 double 中的指数部分可能比 decimal 中的指数部分大得多。

我有关于 binary.NET 中的十进制 浮点运算更详细地解释了存储格式。

哦,decimal 需要 16 个字节,而不是 8 个字节。

It doesn't - decimal only works up to 29 digits and the maximum value is 79,228,162,514,264,337,593,543,950,335.

double, however, has fewer significant digits but a much bigger range. It does this by becoming much less precise for larger numbers. The exponent part can be much larger in double than in decimal.

I have articles on binary and decimal floating point arithmetic in .NET which explain the storage format in more detail.

Oh, and decimal takes 16 bytes, not 8.

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