double-如何使C ++ cout不使用科学计数法

double x = 1500;
for(int k = 0; k<10 ; k++){
    double t = 0;
    for(int i=0; i<12; i++){
        t += x * 0.0675;
        x += x * 0.0675;
    }
    cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;      
}

这个输出

安娜(Bas ana):3284.78儿子·法伊兹(Son faiz):1784.78儿子·安娜(Ana):5069.55

安娜(Bas ana):7193.17儿子·法兹(Son faiz):3908.4儿子·安娜(Son ana):11101.6

安娜(Bas ana):15752儿子(Faiz)儿子:8558.8儿子(ana)儿子:24310.8

Bas ana:34494.5 Son faiz:18742.5 Son ana:53237

安娜:75537.8儿子·法兹:41043.3儿子·安娜:116581

Bas ana:165417 Son faiz:89878.7 Son ana:255295

Bas ana:362238 Son faiz:196821 Son ana:559059

基本安娜:793246儿子法兹:431009儿子安娜:1.22426e + 006

bas ana:1.73709e + 006 Son faiz:943845 Son ana:2.68094e + 006

bas ana:3.80397e + 006 Son faiz:2.06688e + 006 Son ana:5.87085e + 006

我希望数字显示的是确切数字而不是科学数字。 我怎样才能做到这一点?

5个解决方案
78 votes

使用std::fixed流操纵器:

cout<<fixed<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
Tugrul Ates answered 2019-11-08T04:54:23Z
20 votes

如上所述,您可以使用std :: fixed解决问题,如下所示:

cout << fixed;
cout << "Bas ana: " << x << "\tSon faiz: " << t << "\tSon ana: " << x+t <<endl;

但是,完成此操作后,每次在项目中的任何位置打印浮点数或双精度数时,数字仍将以此固定符号打印。 您可以使用

cout << scientific;

但是,如果您的代码变得更加复杂,这可能会变得很乏味。

这就是Boost制作I / O流状态保护程序的原因,该程序会自动将您正在使用的I / O流返回到函数调用之前的状态。 您可以像这样使用它:

#include <boost/io/ios_state.hpp> // you need to download these headers first

{
    boost::io::ios_flags_saver  ifs( os );

    cout << ios::fixed;
    cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;

} // at this bracket, when ifs goes "out of scope", your stream is reset

您可以在官方文档中找到有关Boost的I / O流状态保护程序的更多信息。

您可能还想检查一下Boost Format库,该库也可以使您的输出变得更容易,尤其是在您必须处理国际化的情况下。 但是,它对这个特定问题没有帮助。

Migi answered 2019-11-08T04:55:20Z
3 votes

编写下一个语法:

std::cout << std::fixed << std::setprecision(n);

其中(n)是十进制精度的数字。这应该解决它。

Ahmad Mhd Yones answered 2019-11-08T04:55:51Z
2 votes

您可以使用格式标志

更多信息:[http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/]

muhoweb answered 2019-11-08T04:56:22Z
1 votes

iostream提供了一整套格式化操作符。 这是一个入门指南。

Charlie Martin answered 2019-11-08T04:56:46Z
translate from https://stackoverflow.com:/questions/5212018/how-to-make-c-cout-not-use-scientific-notation