大型double将四舍五入为int - C ++

时间:2015-11-05 03:19:30

标签: c++

我在http://cpp.sh/

上运行了以下代码
// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
    double avg = 112964.6;
    cout << avg << endl;
}

我得到112965作为输出。我在其他编译器中尝试过它 - 结果相同。

它适用于较小的双精度值,如11296.6,但像112964.6这样的大型双精度值会四舍五入为int。为什么要这样做?如何阻止它这样做呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试setprecision

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
    double avg = 112964.6;
    cout << setprecision(9) << avg << endl;
}

答案 1 :(得分:1)

您必须设置要使用的小数精度,您可以使用流操纵器UIViewContentModeScaleAspectFill来执行此操作,其中setprecision (int n)将是要使用的新精度。

您可以从http://www.cplusplus.com/reference/iomanip/setprecision/查看以下示例:

n

预期输出应为:

// setprecision example
#include <iostream>     // std::cout, std::fixed
#include <iomanip>      // std::setprecision



int main () {
     double f =3.14159;
     std::cout << std::setprecision(5) << f << '\n';
     std::cout << std::setprecision(9) << f << '\n';
     std::cout << std::fixed;
     std::cout << std::setprecision(5) << f << '\n';
     std::cout << std::setprecision(9) << f << '\n';
     return 0;
   }