C++ cout.setf(ios_base::fixed,ios_base::floatfiled)解析

setf函数有两个原型:

  1. fmtflags setf(fmtflags flags);
  2. fmtflags setf(fmtflags flags, fmtflags mask);

ios_base类有一个受保护的数据成员,其中的各位(flag)分别控制着格式化的各个方面,如基数{hex,oct,dec},是否显示正数前面的+号,打开一个标志位就是设置该标志位,即设置为1;

对于第一个原型fmtflags setf(fmtflags flags)就是设置相应的标志位,同时返回以前的标志参数;

fmtflags是bitmask类型,以下是一些常用量:

格式常量
常量含义
ios_base::boolalpha输入和输出bool值,可以为true或者false
ios_base::showbase对于输出,使用C++前缀(0for Octal, 0Xfor hexadecimal)
ios_base::showpos在正数前面加上+(decimal)
ios_base::uppercase对于16进制输出来使用大写字母,E表示法
ios_base::showpoint显示末尾的小数点

对于第二个原型fmtflags setf(fmtflags, fmtflags);第一个参数和第一个原型一样,都是设置格式,第二个参数是mask,意思是要清除第一个参数中的哪些位;举例说明:将第3位设置为1表示以10为基数,将第4位设置为1表示以8为基数,将第5位设置为1表示以16为基数,假如现在输出是以10为基数,则需要清除第3位的1,设置为0,设置第5位为1;

格式可以理解为fl = (fl & ~mask) | (flags & mask)

简而言之就是说mask表示了哪些位要被设置,而flags表示这些位设置成什么

fmtflags maskfmtflags:flags含义
ios_base::basefieldios_base::dec使用基数10
ios_base::oct使用基数8
ios_base::hex使用基数16
ios_base:floatfieldios_base::fixed使用定点计数法,如1234.5
ios_base::scientific使用科学计数法,如1.2345e4
ios_base::adjustfieldios_base::left使用左对齐
ios_base::right使用右对齐
ios_base::internal符号或基数前缀左对齐,数值右对齐

再回到C++ cout.setf(ios_base::fixed,ios_base::floatfiled)

就是说输出使用定点输出,同时输出到小数点后6位。

对于定点计数和科学计数法

  1. 精度是指小数点后几位数
  2. 显示末尾的0
  • 14
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值