setiosflags() 的好处多多-阿里云开发者社区

开发者社区> 一叶飘舟> 正文

setiosflags() 的好处多多

简介:
+关注继续查看

本课讲:setiosflags( ios::fixed ),其头文件为:include<iomanip>.
注:在遇到要计算浮点数且希望能控制其输出、精度、小数点后的位数等时,那么这个时候,用setiosflags( ios::fixed )来控制是再好不过了!且看下面程序:

#include<iostream>
#include<cmath>
using namespace std;
int main() {
 
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}

输出结果为:sqrt(2000) = 44.7214. 那么也就是说编译器的默认精度为小数点后4位。那么如果我想让其小数点后精度为1位、2位、3位或20位,该怎么办呢?来,这么试试:
例一:
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main() {
 cout << setprecision( 1 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}   //结果为4e+001
例二:
int main() {
 cout << setprecision( 1 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}    //结果为45
例三:
int main() {
 cout << setprecision( 3 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
} //结果为44.7
大家可以明显看到,编译器输出的结果纯粹是无稽之谈!根本不是按照人们的意志去做的!遇到这种比艳门照还尴尬的情况该怎么办呢?不要怕,这时候动动脑子,救星就来啦!它就是人称一朵犁花压海棠的:setiosflags( ios::fixed ) ! 废话少说,拿实例来!
例一:
int main() {
 cout << setiosflags( ios::fixed ) << setprecision( 1 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}  //结果为44.7
例二:
int main() {
 cout << setiosflags( ios::fixed ) << setprecision( 2 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}  //结果为44.72
例三:
int main() {
 cout << setiosflags( ios::fixed ) << setprecision( 3 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}  //结果为44.721
Apparently, all of the answers are totally correct with any doubt! 结果全部正确,哪怕你来个 setiosflags( ios::fixed ) << setprecision( 1000 ), 结果照样不来半点寒糊! 
此外,还要补充一点的是,某些人,当吃饱撑得在床上直打滚儿、嗷嗷叫着难受时,便喜欢多惹出点事非来,他们喜欢在setiosflags()里再加个showpoint,我不知道这样做好是不好,可我感觉它确实有点多余!因为加不加showpoint几乎是没什么区别,如果你也吃多了,肚子涨,胃痛胃酸不消化,非要挑骨头捡刺儿,那也能找出点不一样,就是:当setprecision()的精度为0的时候,你有showpoint,那结果你就会多个点儿,没showpoint,就没有。实例:
int main() {
 cout << setiosflags( ios::fixed ) << setprecision( 0 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}  // 结果 45
int main() {
 cout << setiosflags( ios::fixed|ios::showpoint ) << setprecision( 0 );
 cout << "sqrt(2000) = " << sqrt( 2000 ) << endl;
 return 0;
}  //结果 45. 
看到这个点儿没?所以说嘛,showpoint,可有可无!如果想简化程序,那干脆就不加!
最后,再次特别提醒大家,想使用setiosflags或者setprecision时,一定得加头文件<iomanip>,在setiosflags()里面填东西的时候,前面一定得加上域符 ios::。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10077 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
2511 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9159 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13884 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4503 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
22400 0
+关注
1635
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载