我有一个计算人口增长的计划。它似乎有效,但是当人口超过100万时,输出的十进制数增加到10的幂。 (这被称为科学符号吗?指数形式?我忘了。)
无论如何输出数据作为完整数字?这是输出的代码,我将不得不转换它。
#include "header.h"
void output (float currentPopulation, float years, float birthRate, float deathRate)
{
cout << "the populaion in " << years << " years will be: " << estimatedPopulation (currentPopulation, years, birthRate, deathRate) << endl;
}
新代码:
#include "header.h"
void output (float currentPopulation, float years, float birthRate, float deathRate)
{
cout << "the populaion in " << years << " years will be: " << fixed << setprecision(0) << estimatedPopulation (currentPopulation, years, birthRate, deathRate) << endl;
}
答案 0 :(得分:7)
std::fixed
操纵器与std::setprecision
一起使用可以帮助您(记住#include <iomanip>
)。
答案 1 :(得分:1)
使用float,你只有24位精度,大约是16,777,216。如果您正在处理大于此数字的数字并且您需要更高的精度,请考虑使用double
,但我认为您仍然需要进行一些格式化以使其看起来像您想要的那样。在这种情况下,我建议您查看http://www.arachnoid.com/cpptutor/student3.html和http://www.fredosaurus.com/notes-cpp/io/omanipulators.html。
cout << fixed << estimatedPopulation (currentPopulation, years, birthRate, deathRate)
答案 2 :(得分:1)
我建议您阅读std::scientific
:http://msdn.microsoft.com/en-us/library/szb722da(VS.71).aspx
答案 3 :(得分:1)
float v(1234567891000000.0f);
cout.precision(0);
cout << fixed << v << endl;
注意浮点数固有的精度损失:输出
1234567948140544
答案 4 :(得分:0)
改为使用printf,例如printf("%f", myvalue)
。