什么是"有用的" 4字节浮点范围?

时间:2015-05-01 03:49:11

标签: floating-point x86

假设我有一个函数f(x) = x * 10 ^ -N

在这种情况下,只要

,最大的N就是什么

f(1) < f(2)

f(2) < f(3)

等,只要结果在-1和1之间,就可以达到x = 10

结果存储在4字节的浮点数后?

例如,我知道N = 50是不可接受的,因为在存储在4字节的浮点数之后,任何数字最多10变成0。

还有什么是最大的N,结果仍然可以说90%准确?

编辑:有问题的硬件:基于x86的现代处理器

EDIT2:与此同时,我创建了这个简单的东西来强制测试其准确性:

int main() {

    double dbl;
    float sng;

    for (int i = 0; i < 100; i++) {
        double increment = std::pow(10, -i);

        dbl = 0;
        while (dbl < 1) {
            dbl += increment;
            sng = dbl;

            double check = (double)sng / dbl;
            if (check != 1) {
                if (check < 0.9 || check > 1.11111) {
                    std::cout << "Fail at N = " << i;
                    goto stop;
                }

            }

        }
        std::cout << "Checked " << i << "\n";
    }

    stop:

    return 1;
}

现在已经停留在N = 9了一段时间......现在可以完成任何一秒或者一千年后......

0 个答案:

没有答案