setprecision、setw、fixed详解

本文详细介绍了C++中用于控制浮点数输出精度的setprecision和fixed操作符。setprecision设置有效数位数,不包含小数点,而fixed确保浮点数以定点格式而非科学记数法显示。例如,setprecision(2)和fixed结合会显示小数点后两位,即使末尾有0也不会省略。此外,setw用于字段宽度,精度设置会保持有效直至更改。
摘要由CSDN通过智能技术生成

格式化操作符setprecision

  • 浮点值可以四舍五入到若干位有效数或精度,这是出现在小数点前后的总位数。可以通过使用 setprecision操作符 来控制显示浮点数值的有效数的数量。

  • 注意,与 setw 不同的是,setprecision 不计算小数点。例如,当使用 setprecision(4) 时,输出包含 4 位有效数,但是需要 5 个位置来显示;例如:double a = 12.3456; cout << setprecision(4) << a << endl; 会输出12.34

  • 如果一个数字的值可以由少于 setprecision 指定的精度位数来表示,则操作符将不起作用。

  • 下面的表显示了 setprecision 如何影响各种值的显示方式。

  • 数 字操作符显示的值
    12.56789setprecision(3)12.6
    12.300setprecision(6)12.3
    123.500setprecision(5)123.5
    12.91010setprecision(2)13
  • 如果有效数少于要显示的数字,则 setprecision 将舍入(四舍五入),而不是截断数字。

  • 另外还需要注意的是,末尾的零将被省略。

  • 与 setw 字段宽度不同的是,setprecision 的精度设置将保持有效,直到更改为其他值为止。

  • setw的作用:cout << setw(6) << temp1 << endl;cout << setw(6) << temp2 << endl; 以 6 个字符的字段宽度打印,可以用setw实现右对齐效果;

  • setw的设置宽度不会一直保持有效;

  • 同样的,setw也会省略末尾的0;

  • 如果一个数字太大,无法使用 setprecision 指定的有效数位数来打印,则许多系统(根据编译器)会以科学表示法的方式打印。

  • 为了防止出现这种情况,可以使用另一个流操作符 fixed,它表示浮点输出应该以固定点或小数点表示法显示。

  • fixed 操作符可能最常用的还是当它与 setprecision 操作符一起使用时,setprecision 即可以以一种新的方式显示。它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。

  • 注意设置了fixed之后,setprecision()的精度值应该设置为小数的位数,而不是浮点数的有效数字位数;

  • 例如:

  • double a = 123.456;

  • cout << fixed << setprecision(2) << a << endl;

  • 则会输出:123.46

  • 设置fixed之后不会省略末尾的0;

  • 同样精度值也是能保持有效的,直到更改为其他值为止。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taiga_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值