代码之家  ›  专栏  ›  技术社区  ›  Squirrelsama

.NET十进制的二进制表示

  •  18
  • Squirrelsama  · 技术社区  · 14 年前

    一个.NET decimal 类型在内存中用二进制表示?

    十进制的 以下情况除外:

    1. 显然比浮点数更准确
    2. 28(有时29?)数字中的总有效位数

    1 回复  |  直到 5 年前
        1
  •  38
  •   Jon Skeet    12 年前

    Decimal.GetBits 你想要的信息。

    基本上它是一个96位的整数作为尾数,加上一个符号位,再加上一个指数来表示有多少 十进制的 把它移到右边的地方。

    所以要表示3.261,尾数是3261,符号位是0(即正),指数是3。请注意,十进制不是标准化的(故意的),所以您可以

    我在这篇文章里有更多的信息 decimal floating point .

        2
  •  1
  •   Nisse Engström sting_roc    5 年前

    https://www.csharpindepth.com/Articles/Decimal

    如何存储十进制数?

    十进制数以128位存储,尽管严格来说只需要102位。将十进制数看作三个32位整数表示尾数,然后一个整数表示符号和指数是很方便的。最后一个整数的高位是符号位(按正常方式,位被设置为(1)表示负数),位16-23(高位16字的低位)包含指数。其他位必须全部清除(0)。此表示形式由 decimal.GetBits(decimal)