为什么C ++会绕过我的双倍? (例如19.9999998变为20)

时间:2017-02-26 18:28:01

标签: c++ floating-point numbers

我在使用c ++舍入我的数字时遇到了一些问题......

我的代码是:

double w, semiw;
cin >> w;
semiw = w / 2.0;
cout << "w : " << w << "; semiw : " << semiw << endl;

,当给定控制台输入19.9999998时返回:

w : 20; semiw : 10

而不是

w : 19.9999998; semiw : 9.9999999
人们可以期待。我想保持精度double应该提供,根据this page,有效数字为15位。我怎样才能做到这一点?提前感谢您的答案:)

1 个答案:

答案 0 :(得分:1)

尝试为输出设置setprecision

asyncAfter()