小编Jen*_*wis的帖子

机器Epsilon精度差异

我试图计算C++中双打和浮点数的机器epsilon值,作为学校作业的一部分.我在Windows 7中使用Cygwin,64位,这里是代码:

#include <iostream>

int main() {
    double epsilon = 1;
    while(1 + epsilon > 1)
        epsilon = epsilon / 2;
    epsilon = 2*epsilon;

    std::cout << epsilon << std::endl;

    float epsilon_f = 1;
    while(1 + epsilon_f > 1)
        epsilon_f = epsilon_f / 2;
    epsilon_f = 2*epsilon_f;

    std::cout << epsilon_f << std::endl;

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到两个值的1.0842e-019.我查了一下,应该得到2.22e-16的双倍,1.19e-07的浮动值.当我在Macbook上运行完全相同的代码时,代码返回正确的值.什么可能导致我的Windows机器出现差异?

c++ precision double epsilon

5
推荐指数
1
解决办法
291
查看次数

标签 统计

c++ ×1

double ×1

epsilon ×1

precision ×1