【发布时间】:2010-08-11 13:24:01
【问题描述】:
我正在编写一个程序,将带有不同小数位的数字四舍五入,例如 2001.3666 最终会变成 2001.37,我设法通过添加 0.005 然后乘以 100 并转换为 int 然后再除以来完成这项工作100.
一切正常,没有问题,制作一些循环和东西也很有趣,但后来一切都变得奇怪了。
您会看到 then 程序的第一行重复用户输入的内容,开始显示舍入数字而不是用户输入的实际数字。
一段时间后我得出结论,这不是我的代码,因为我开始了一个新项目并迅速编写了这段代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "enter: ";
double numberWithDecimalPlaces;
cin >> numberWithDecimalPlaces;
cout << "you entered " << numberWithDecimalPlaces << endl;
system("pause");
return 0;
}
我输入 2001.3666,程序进入换行符,即使我没有在其中编码并回复 2001.37
它的确切输出是:
enter: 2001.3666
you entered 2001.37
现在这是一个新项目中的全新程序,没有任何与我之前的项目相同的变量名称,并且用户输入的数字正在四舍五入,除非 cin >> 变量自动四舍五入,我认为它看起来不太可能就像早期程序中的某些代码仍在内存中并与此代码冲突。
这又不太可能对吗?
我在 win7 上使用 Visual Studio 2010
【问题讨论】:
标签: c++ visual-studio-2010 rounding precision iostream