0

0

c++中如何保留小数点后两位_c++ cout格式化输出【指南】

穿越時空

穿越時空

发布时间:2026-01-25 12:22:03

|

681人浏览过

|

来源于php中文网

原创

必须同时使用std::fixed和std::setprecision(n)才能控制小数点后n位;单独setprecision(n)仅控制总有效数字位数,易导致科学计数法或非预期截断;格式化不改变数值精度,财务场景需先round再输出。

c++中如何保留小数点后两位_c++ cout格式化输出【指南】

std::fixedstd::setprecision 控制小数位数

默认情况下,cout 用的是科学计数或自动精度模式,setprecision(2) 只会控制**总有效数字位数**,不是小数点后两位。必须搭配 std::fixed 才能锁定小数位数。

实操建议:

  • std::fixed 让浮点输出始终以定点十进制形式显示(禁用科学计数法)
  • std::setprecision(2)fixed 模式下才表示“小数点后保留 2 位”
  • 两者需一起用,顺序无关,但习惯上先写 fixed
#include 
#include 
int main() {
    double x = 3.14159;
    std::cout << std::fixed << std::setprecision(2) << x << '\n'; // 输出 3.14
}

不加 std::fixed 会导致什么?

只用 std::setprecision(2) 时,cout 仍按默认浮点格式走,结果是“最多两位有效数字”,不是“小数点后两位”。比如:

  • 123.456 → 输出 1.2e+02(科学计数)或 120(取决于值大小和流状态)
  • 0.00123 → 输出 0.0012(两位有效数字),而非 0.00
  • 这常导致调试时数值“看起来被截断了”,其实是格式逻辑误解

如何临时恢复默认浮点格式?

std::fixedstd::setprecision 是流的持久状态,会影响后续所有浮点输出。若只想局部生效,有两种方式:

Lobe
Lobe

微软旗下的一个训练器学习模型的平台

下载

立即学习C++免费学习笔记(深入)”;

  • 作用域限定:在 { } 内设置,离开作用域后不影响外层流(但 cout 是全局对象,实际不生效;此法仅适用于自定义 std::ostringstream
  • 更可靠的是手动清除标志:std::cout.unsetf(std::ios_base::fixed)
  • 同时重置精度:std::cout.precision(6)(默认精度是 6)
std::cout << std::fixed << std::setprecision(2) << 3.14159 << '\n';
std::cout.unsetf(std::ios_base::fixed);
std::cout.precision(6);
std::cout << 3.14159 << '\n'; // 恢复为 3.14159

注意 double 的精度本质限制

格式化输出只是“怎么显示”,不改变数值本身。很多小数(如 0.1)在二进制中无法精确表示,所以即使设成 fixed + setprecision(2),也可能看到类似 0.10 正常,但 0.29 输出为 0.280.29 不稳定——这是舍入行为,不是格式错误。

如果业务要求严格四舍五入到小数点后两位(比如财务),不能只靠 cout 格式化,得先对原始值做 round(x * 100.0) / 100.0 再输出。

相关专题

更多
c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

53

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

101

2025.10.23

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

42

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

46

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

202

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

341

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

16

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

100

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

73

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号