赞
踩
目录
1.2.3 setiosflags(ios::scientific)
可以用于处理浮点数不能用于处理整数;
举例一:输入一个整数保留两位小数,再输入一个浮点数,保留三位小数;
- #include <iostream>
- using namespace std;
- int main()
- {
- short a;
- cin >> a;
- printf("%.2f\n", a);
- double b;
- cin >> b;
- printf("%.3f", b);
- return 0;
- }
运行结果:例如,依次输入4,3.67878;
- 4
- 0.00
- 3.67878
- 3.679
- C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 90000)已退出,代码为 0。
- 要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
- 按任意键关闭此窗口. . .
需要加头文件#include <iomanip>;
使用操作符将小数截短显示时,数据将进行四舍五入处理;
cout<<setprecision(int n)<<input<<endl;
含义为输出n位有效数字,注意是有效数字而不是小数位数;
直接输出或者设置精度为默认值0,都是输出六位有效数字;
代码及运行结果:
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int main()
- {
- cout << "setprecision(int n)方法:" << endl;
- cout << "无限循环小数:" << endl;
- double x = 10.0 / 7;
- for (int i = 0; i < 8; i++)
- cout <<"保留"<<i<<"位有效数字 "
- << setprecision(i) << x << endl;
- cout << "有限小数:" << endl;
- double y = 10.0 / 8;
- for (int i = 0; i < 6; i++)
- cout << "保留" << i << "位有效数字 "
- << setprecision(i) << y << endl;
- return 0;
- }
运行结果:
- setprecision(int n)方法:
- 无限循环小数:
- 保留0位有效数字 1
- 保留1位有效数字 1
- 保留2位有效数字 1.4
- 保留3位有效数字 1.43
- 保留4位有效数字 1.429
- 保留5位有效数字 1.4286
- 保留6位有效数字 1.42857
- 保留7位有效数字 1.428571
- 有限小数:
- 保留0位有效数字 1
- 保留1位有效数字 1
- 保留2位有效数字 1.2
- 保留3位有效数字 1.25
- 保留4位有效数字 1.25
- 保留5位有效数字 1.25
-
- C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 86848)已退出,代码为 0。
- 要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
- 按任意键关闭此窗口. . .
cout<<setiosflags(ios::fixed)<<setprecision(int n)<<input<<endl;
含义为保留n位小数,注意,这里的n是n位小数的意思;
不设置精度,显示6位有效小数;
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int main()
- {
- cout << "setprecision(int n)方法:" << endl;
- cout << "无限循环小数:" << endl;
- double x = 10.0 / 7;
- for (int i = 0; i < 8; i++)
- cout <<"保留"<<i<<"位小数 "
- <<setiosflags(ios::fixed)
- << setprecision(i) << x << endl;
- cout << "有限小数:" << endl;
- double y = 10.0 / 8;
- for (int i = 0; i < 6; i++)
- cout << "保留" << i << "位小数 "
- << setiosflags(ios::fixed)
- << setprecision(i) << y << endl;
- return 0;
- }
运行结果为:
- setprecision(int n)方法:
- 无限循环小数:
- 保留0位小数 1
- 保留1位小数 1.4
- 保留2位小数 1.43
- 保留3位小数 1.429
- 保留4位小数 1.4286
- 保留5位小数 1.42857
- 保留6位小数 1.428571
- 保留7位小数 1.4285714
- 有限小数:
- 保留0位小数 1
- 保留1位小数 1.2
- 保留2位小数 1.25
- 保留3位小数 1.250
- 保留4位小数 1.2500
- 保留5位小数 1.25000
-
- C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 96368)已退出,代码为 0。
- 要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
- 按任意键关闭此窗口. . .
-
cout<<setiosflags(ios::scientific)<<setprecision(int n)<<input<<endl;
含义为输出格式为科学计数法格式,保留n位小数;
不设置精度时,显示六位有效的小数位;
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int main()
- {
- cout << "setprecision(int n)方法:" << endl;
- cout << "无限循环小数:" << endl;
- double x = 1000.0 / 7;
- for (int i = 0; i < 8; i++)
- cout << "保留" << i << "位小数 "
- << setiosflags(ios::scientific)
- << setprecision(i) << x << endl;
- cout << "有限小数:" << endl;
- double y = 100.0 / 8;
- for (int i = 0; i < 6; i++)
- cout << "保留" << i << "位小数 "
- << setiosflags(ios::scientific)
- << setprecision(i) << y << endl;
- return 0;
- }
运行结果为:
- setprecision(int n)方法:
- 无限循环小数:
- 保留0位小数 1e+002
- 保留1位小数 1.4e+002
- 保留2位小数 1.43e+002
- 保留3位小数 1.429e+002
- 保留4位小数 1.4286e+002
- 保留5位小数 1.42857e+002
- 保留6位小数 1.428571e+002
- 保留7位小数 1.4285714e+002
- 有限小数:
- 保留0位小数 1e+001
- 保留1位小数 1.2e+001
- 保留2位小数 1.25e+001
- 保留3位小数 1.250e+001
- 保留4位小数 1.2500e+001
- 保留5位小数 1.25000e+001
-
- C:\Users\uaer\source\repos\12.26\x64\Debug\12.26.exe (进程 86048)已退出,代码为 0。
- 要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
- 按任意键关闭此窗口. . .
强制类型转换分为显示类型转换和隐式类型转换;
- #include <iostream>
- using namespace std;
- int main()
- {
- int x = 2.6;//隐式类型转换;
- cout << "x=" << x << endl;
- double y = 2.67321;//显示类型转换;
- //显示类型转换的格式为static_cast<希望转换成的数据类型 只能为基本数据类型>(输入数据);
- cout << "y=" << static_cast<int>(y) << endl;
- return 0;
- }
运行结果为:
- x=2
- y=2
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- double x = 3.1415926;
- double y = 2.71828;
- cout << round(x) << endl;
- cout << round(y) << endl;
- return 0;
- }
运行结果为:
- 3
- 3
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- double x = 3.1415926;
- double y = 2.71828;
- cout << ceil(x) << endl;
- cout << ceil(y) << endl;
- return 0;
- }
运行结果为:
- 4
- 3
其实隐式类型转换也是一种向下取整;
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- double x = 3.1415926;
- double y = 2.71828;
- cout << floor(x) << endl;
- cout << floor(y) << endl;
- return 0;
- }
运行结果为:
- 3
- 2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。