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;
}
这是输出
下一个:3284.78儿子:1784.78儿子安娜:5069.55
下一个:7193.17儿子:3908.4儿子和女儿:11101.6
出生日期:15752儿子:8558.8儿子和女儿:24310.8
出生日期:34494.5儿子:18742.5儿子姓名:53237
下一个:75537.8儿子:41043.3儿子和女儿:116581
出生日期:165417儿子:89878.7儿子姓名:255295
地址:362238儿子:196821儿子姓名:559059
出生地:793246儿子:431009儿子姓名:1.22426e+006公路
底部:1.73709e+006顶部:943845儿子姓名:2.68094e+006
底部:3.80397e+006顶部:2.06688e+006儿子和女儿:5.87085e+006公路
我想用精确的数字而不是科学的数字来显示数字。我该怎么做呢?
9条答案
按热度按时间ut6juiuv1#
使用
std::fixed
流操纵器:cs7cruho2#
如上所述,您可以使用
std::fixed
来解决您的问题,如下所示:但是,在您完成此操作后,每次在项目 * 中的任何地方打印
float
或double
* 时,数字仍将以这种固定的表示法打印。但是如果代码变得更加复杂,这可能会变得很乏味。
这就是Boost开发I/O Stream State Saver的原因,它可以自动将您正在使用的I/O流返回到函数调用之前的状态。
您可以在the official docs中找到有关Boost的I/O流状态保护程序的更多信息。
你也可以试试Boost Format library,它可以让你的输出更容易,特别是当你必须处理国际化的时候,但是它对这个问题没有帮助。
avwztpqn3#
编写下一个语法:
其中
(n)
是小数精度的数字。这应该可以修复它。注:您需要
#include <iomanip>
才能使用std::setprecision
。wbrvyc0a4#
在C++20中,你可以使用
std::format
来完成这个任务:输出:
这种方法的优点是它不会更改流状态。
同时,您可以使用the {fmt} library,
std::format
基于。{fmt}还提供了print
函数,使此操作更加简单和高效(godbolt):std::format
的作者。xlpyo6sf5#
您可以使用格式标志
更多信息:http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/
yruzcnhs6#
可以按以下方式使用函数fixed:
标准::cout〈〈标准::固定〈〈...
或者你可以使用printf函数,像这样的标准格式“12.12%f”:
printf(“数字= %12.12f”,浮点数);
6kkfgxo07#
iostream提供了一整套格式化操作符,下面是一个tutorial,让你开始使用它。
mec1mxoz8#
您也可以在c++中使用
printf
来打印不带科学记数法的值。因为您也可以使用
cin
和cout
来代替scanf
和printf
,但是,如果您要输入一百万个数字并打印一百万行,则使用scanf
和printf
会更快。产出
x9ybnkn69#
使用此代码: