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 小时前
C 枚举变量
c语言·开发语言·网络安全
冷凝雨7 小时前
前导零、后导零、最高有效位、最低有效位计算(C)
c语言
鸥梨菌Honevid7 小时前
C 语言 restrict 关键字深度解析:从“独占访问”承诺到编译器激进优化
c语言
水饺编程12 小时前
第2章:Linux 基础,切换用户
linux·c语言·汇编
知识分享小能手13 小时前
C学习教程,从入门到精通,C语言学生信息管理系统 — 知识点详解(18)
c语言·学习·1024程序员节
爱读书的小胖13 小时前
LeetCode 55 跳跃游戏 C 语言解题分析
c语言·数据结构·算法·leetcode·1024程序员节
pipixia2003314 小时前
C++ 面试高频:namespace 的 6 个知识点,从 using 到匿名命名空间
c语言·学习·算法·嵌入式·命名空间·c++面试·匿名命名空间
Navigator_Z15 小时前
LeetCode //C - 1300. Sum of Mutated Array Closest to Target
c语言·算法·leetcode
爱读书的小胖18 小时前
LeetCode 274 H 指数 C 语言解题分析
c语言·算法·leetcode·1024程序员节
Pointer Pursuit18 小时前
Linux环境变量
linux·服务器·c语言·链表·1024程序员节