setiosflags() 的好处多多

转载 2015年11月18日 23:54:07

本课讲: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::。 好啦,这次就是这样,下回再说!


相关文章推荐

setiosflags() 的好处多多

本课讲:setiosflags( ios::fixed ),其头文件为:include. 注:在遇到要计算浮点数且希望能控制其输出、精度、小数点后的位数等时,那么这个时候,用setiosflags(...

setiosflags作用

cout   setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用       是执行由有参数指定区域内的动作; 参数: 1.  iso::fixed 是操作符s...

setiosflags和数制基数的用法

Setiosflags的用法 ios::fixed 是操作符setiosflags的参数之一,该参数是指定的动作以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧; ...

学习HtML的必要好处

  • 2015-07-10 23:36
  • 291KB
  • 下载

程序员的正能量:干IT的六大好处

概述:程序员们,来点正能量!本文是一位程序员总结的干IT的六点好处↓↓ 你是否还在抱怨自己是一个卑微的程序猿?你是否还在吐槽自己每天下班累成狗?看看下面这位程序员同行总结的六点干IT的好...

SSH各层作用及好处

  • 2013-07-16 10:40
  • 19KB
  • 下载

虚拟光驱 很有好处哦

  • 2012-06-04 16:25
  • 342KB
  • 下载

编程:休息片刻的好处

前天在网上看到的,觉得写的挺好的,所以就转载了,但是忘记了网址的,抱歉的啦。。。。。在此道歉下,望能理解~~~~ 你会更精明而不是更卖力地工作。我曾经为了一个功能的实现而卖力工作过。每天12小时,整...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)