// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
double avg = 112964.6;
cout << avg << endl;
}
我得到112965作为输出。我在其他编译器中尝试过它 - 结果相同。
它适用于较小的双精度值,如11296.6,但像112964.6这样的大型双精度值会四舍五入为int。为什么要这样做?如何阻止它这样做呢?
谢谢!
答案 0 :(得分:2)
#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;
}