Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;程序未按预期运行,double在不应转换时正在转换';不可能_C++_Visual Studio 2010_Rounding_Precision_Iostream - Fatal编程技术网

C++ C++;程序未按预期运行,double在不应转换时正在转换';不可能

C++ C++;程序未按预期运行,double在不应转换时正在转换';不可能,c++,visual-studio-2010,rounding,precision,iostream,C++,Visual Studio 2010,Rounding,Precision,Iostream,我在做一个程序,用不同的小数位对数字进行四舍五入,例如2001.3666将最终成为2001.37,我通过将0.005乘以100,转换成整数,然后再除以100来实现这一点 一切都很好,没有问题,做一些循环也很有趣,但后来一切都变得很奇怪 您将看到then程序的第一行,它重复用户键入的内容,并开始显示舍入的数字,而不是用户键入的实际数字 过了一段时间,我得出结论,这不是我的代码,因为我开始了一个新项目,并很快编写了以下代码: #include <iostream> #include &l

我在做一个程序,用不同的小数位对数字进行四舍五入,例如2001.3666将最终成为2001.37,我通过将0.005乘以100,转换成整数,然后再除以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; 
}
现在,这是一个新项目中的全新程序,没有任何与我先前项目相同的变量名,用户输入数字正在向上取整,除非cin>>变量自动向上取整,我发现这不太可能。看起来早期程序中的一些代码仍在内存中,并且与此代码冲突

这也不太可能是对的


我在win7上使用visual studio 2010,数字在显示时通常是四舍五入的,但您可以控制数字的大小。C++P>< P> C++中CUT的默认精度为6位,因此2001.3666将显示为2001.37,但201.3666应显示为201.367。 您可以这样提高精度:

#include <iomanip>
...
cout << "you entered " << setprecision(10) << numberWithDecimalPlaces << endl;
#包括
...

我当时的印象是setprecision只截断小数点,不向上或向下取整。我真的是个新手,我确实读过关于setprecision的书,但显然我正在读的那本书忽略了这一点。谢谢你的帮助,看起来setprecision会自动取整,最后我花了一个小时的时间编写代码,用数学进行取整,谢谢你的快速回复。
#include <iomanip>
...
cout << "you entered " << setprecision(10) << numberWithDecimalPlaces << endl;