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

按指数计算的二进制浮点精度数

  •  0
  • Anycorn  · 技术社区  · 15 年前

    什么是一个好的方法来存储浮点精度的数字? 像这样,但也许更有效?

    x = 1;
    for i = 0,size-1 {  // loop over number of bins
        if (value > x) {
            ++bin[i]; return;
        }
        x *= 0.1;
    }
    ++bin[size-1]; // increment last bins
    

    frexp ,并使用它。 值得吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Tom Sirgedas    15 年前

    我来回答这个问题,我想它可能会帮助你:

    “给定一个数字x,用科学记数法写x时的指数是多少。例如,如果x为.007,则指数为-3(7x10^-3)。”

    让我们取两边的圆木(以10为基数)

    • 对数(x)=对数(a*10^b)
    • 对数(x)=对数(a)+对数(10^b)
    • 对数(x)=对数(a)+b

    现在b是一个整数,0<=日志(a)<所以log(a)实际上只是log(x)的分数部分。所以,我们可以通过舍入log(x)来去掉分数部分。

    • b=地板(对数(x))

    当x=.007时,b=楼层(-2.15)=-3,如预期

    我想C代码应该是