C 语言 保留 2 位小数并且四舍五入输出

C 语言 保留 2 位小数并且四舍五入输出

方法① printf 直接格式化(最简单!刷题最常用✅)

printf("%.2f", x);

printf 的 %.2f 默认自带四舍五入!不需要 round,不需要 + 0.5

复制代码
#include <stdio.h>
int main()
{
    double x = 80.845;
    printf("%.2f", x);
    return 0;
}

输出:80.85,自动四舍五入保留 2 位小数。

示例:

  • 90.55 → 90.55
  • 100.0 → 100.00
  • 2.344 → 2.34
  • 2.345 → 2.35

💡重点:只是输出的时候四舍五入,变量 x 内存里原始值没有改变!只是打印效果。


方法②:如果你想把变量本身的值真正变成四舍五入后两位小数(改变内存里面的数据)

公式:x = round(x * 100) / 100.0;

乘以 100 四舍五入成整数,再除以 100,得到保留两位小数的 double 值 需要头文件 #include <math.h>

复制代码
#include <stdio.h>
#include <math.h>
int main()
{
    double x = 80.845;
    x = round(x * 100) / 100.0;
    printf("%.2f", x);
    return 0;
}

此时 x 变量本身就是 80.85,不是 80.845。

刷题 OJ 绝大多数场景,只用方法① printf ("%.2f") 就足够,不用修改变量本身。


回到刚才那道牛客题完整正确代码

复制代码
#include <stdio.h>
int main()
{
    int i;
    double a, b, c;
    scanf("%d %lf %lf %lf", &i, &a, &b, &c);
    // %.2f 自动四舍五入保留两位小数
    printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", i, a, b, c);
    return 0;
}

输入:17140216 80.845 90.55 100.00 输出:The each subject score of No. 17140216 is 80.85, 90.55, 100.00.


格式速记表

表格

写法 效果 四舍五入
%f 原样输出 double,6 位小数 是
%.2f 保留 2 位小数输出 ✅自动四舍五入(刷题首选)
%.1f 保留 1 位小数输出 ✅自动四舍五入
%.0f 保留 0 位小数(输出整数) ✅自动四舍五入

⚠️易错区分

  1. (int)x:强制转换,直接截断丢掉小数,不会四舍五入 ! (int)80.845 →得到80。不要和%.0f搞混。
  2. %.2f只是打印外观变化,原始变量值不变。
  3. round(x*100)/100.0才会真正修改变量存储的数值。

绝大多数 OJ 题目,只要求输出结果,直接用 printf 格式化即可,不要去改动原始变量。

相关推荐
无忧.芙桃7 小时前
位图妙用:512MB 实现 40 亿整数的存在性查询
c语言·c++·面试·哈希算法
听风若依7 小时前
数据在内存中的存储-纸面笔记整理
c语言·笔记
殷色玫瑰8 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
Code_Solitude8 小时前
C语言:关于二维数组的作业总结
java·c语言·前端
老花眼猫9 小时前
数学艺术图案画-曼陀罗(93)
c语言·经验分享·青少年编程·课程设计
水饺编程10 小时前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
沐晓时光10 小时前
C语言入门,深入理解指针(2)
c语言·开发语言
Logic10110 小时前
C语言/数据结构贪心算法题解:字符串趋同——逐位统计最高频率求最小修改代价
c语言·数据结构·贪心算法·字符串·时间复杂度·频率统计·算法题
水饺编程10 小时前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
H.莓飛11 小时前
【Linux】命令行参数、环境变量与程序地址空间
linux·c语言·chrome·后端·centos