如何阻止大型浮点数以指数形式输出。 (科学计数法?)

时间:2010-12-13 16:25:11

标签: c++

我有一个计算人口增长的计划。它似乎有效,但是当人口超过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;
    } 

5 个答案:

答案 0 :(得分:7)

std::fixed操纵器与std::setprecision一起使用可以帮助您(记住#include <iomanip>)。

答案 1 :(得分:1)

使用float,你只有24位精度,大约是16,777,216。如果您正在处理大于此数字的数字并且您需要更高的精度,请考虑使用double,但我认为您仍然需要进行一些格式化以使其看起来像您想要的那样。在这种情况下,我建议您查看http://www.arachnoid.com/cpptutor/student3.htmlhttp://www.fredosaurus.com/notes-cpp/io/omanipulators.html

cout << fixed << estimatedPopulation (currentPopulation, years, birthRate, deathRate)

答案 2 :(得分:1)

答案 3 :(得分:1)

float v(1234567891000000.0f);
cout.precision(0);
cout << fixed << v << endl; 

注意浮点数固有的精度损失:输出

  

1234567948140544

答案 4 :(得分:0)

改为使用printf,例如printf("%f", myvalue)