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 Son ana:5069.55
Bas ana:7193.17 Son faiz:3908.4 Son ana:11101.6
Bas ana:15752 Son faiz:8558.8 Son ana:24310.8
Bas ana:34494.5 Son faiz:18742.5 Son ana:53237
Bas ana:75537.8 Son faiz:41043.3 Son ana:116581
Bas ana:165417 Son faiz:89878.7 Son ana:255295
Bas ana:362238 Son faiz:196821 Son ana:559059
Bas ana:793246 Son faiz:431009 Son ana: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
我希望数字用精确数字显示而不是科学数字。我怎么能这样做?
答案 0 :(得分:75)
使用std::fixed
流操纵器:
cout<<fixed<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
答案 1 :(得分:19)
如上所述,您可以使用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
您可以在the official docs中找到有关Boost的I / O流状态保护程序的更多信息。
您可能还想查看Boost Format library,这也可以让您的输出更轻松,特别是如果您必须处理国际化。但是,对于这个特殊问题,它无济于事。
答案 2 :(得分:2)
答案 3 :(得分:2)
编码下一个语法:
i = 0
while (i < <num_images>) {
//your code here
}
其中std::cout << std::fixed << std::setprecision(n);
是十进制精度的数字。
这应该可以解决。
答案 4 :(得分:1)
使用iostream可以获得一整套格式化操作符。这是一个tutorial,可以帮助您入门。
答案 5 :(得分:1)
在C ++ 20中,您将可以使用std::format
来做到这一点:
std::cout << std::format("Bas ana: {:f}\tSon faiz: {:f}\t"
"Son ana: {:f}\n", x, t, x + t);
输出:
Bas ana: 3284.776791 Son faiz: 1784.776791 Son ana: 5069.553581
Bas ana: 7193.172376 Son faiz: 3908.395585 Son ana: 11101.567961
...
此方法的优点是它不会更改流状态。
在此期间,您可以使用the {fmt} library,std::format
是基于。 {fmt}还提供了print
功能,使此操作变得更加轻松和高效(godbolt):
fmt::print("Bas ana: {:f}\tSon faiz: {:f}\tSon ana: {:f}\n", x, t, x + t);
免责声明:我是{fmt}和C ++ 20 std::format
的作者。
答案 6 :(得分:0)
您可以通过以下方式使用功能固定:
std :: cout << std :: fixed << ...
或者您可以通过这种方式将printf函数用于标准格式,例如“ 12.12%f”:
printf(“数字=%12.12f”,float_number);
答案 7 :(得分:0)
您还可以在c ++中使用@react-native-firebase/messaging
打印值,而无需科学记数法。
因为您也可以使用:react-native-firebase_messaging has not defined a default in project.ext.'react-native'.versions.android.compileSdk in its build.gradle file.
和printf
代替cin
和cout
,但是,如果您要输入一百万个数字并打印一百万行,使用scanf
和printf
更快。
scanf
输出
printf