Decimal 数据类型如何在精度仅为 29 位的情况下计算出如此长的范围
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实并非如此 -
十进制
最多只能使用 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 indouble
than indecimal
.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.