C ++跨平台的不同数字结果

时间:2017-09-27 16:09:08

标签: c++

我有以下代码:

#include <iostream>
using namespace std;
int main() {

    double value = 0;
    double gain = 0.01;
    double offset = -500;

    value -= offset;
    unsigned long raw = value / gain;
    cout << raw;

    return 0; 
}

在我的带有MinGW 5.0和gcc 4.7.3的Windows机器上,该程序的控制台输出是49999而不是50000.使用一些随机在线IDE(https://ideone.com/uDhPFM)以及我的linux机器,结果是50000如预期的那样。

为什么会这样?

编辑:在Windows和Linux上,我使用CLion的默认安装来运行程序。

更新:

#include <iostream>
using namespace std;

int main() {
    double value = 0;
    double gain = 0.01;
    double offset = -500;

    value = value - offset;
    double rawDouble = value / gain;
    unsigned long rawInt = value / gain;
    cout << rawDouble << endl;
    cout << rawInt << endl;
    cout << setiosflags(ios::fixed) << setprecision(24) << rawDouble << endl;
    cout << setiosflags(ios::fixed) << setprecision(24) << (value / gain) << endl;

    return 0;
}

使用此代码输出

50000
49999
50000.000000000000000000000000
50000.000000000000000000000000

只有与任务/隐性演员直接相关的分组似乎失败了。

0 个答案:

没有答案
相关问题