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.5590.55
  • 100.0100.00
  • 2.3442.34
  • 2.3452.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 格式化即可,不要去改动原始变量。

相关推荐
程序猿阿森3 小时前
C语言预处理完全指南:宏定义、条件编译与头文件规范,一篇搞懂工程化编程
c语言·c++·编译
wuminyu10 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
Blockbuater_drug12 小时前
FreeSASA: 开源 SASA 计算库,pip 一条命令替代 NACCESS
c语言·开源·sasa·freesasa·溶剂可及表面积·naccess·python api
Logic10112 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Logic10113 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Logic10115 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和
Logic10117 小时前
C语言/数据结构字符串题解:找出DNA序列中未配对的独特序列——排序+遍历(O(nlogn))
c语言·数据结构·字符串·数组·排序·时间复杂度·算法题
Navigator_Z17 小时前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode
是隼人18 小时前
buuctf-pwn picoctf_2018_shellcode(ret2shellcode)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门