You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:C语言printf用%.3f格式化数值的输出结果及代码错误修正

问题分析与修正代码

你的代码存在几个核心问题,直接导致了错误结果:

  • 用int类型存储浮点数,会直接截断小数部分,丢失原始数值精度
  • scanf用了%i格式符(用于读取整数),读取浮点数应该用%f(对应float)或%lf(对应double)
  • printf里传入的是&num1(变量的内存地址),而非变量本身的数值
  • 任务要求直接打印给定的三个数值,不需要做交互式输入,你的代码逻辑完全偏离了要求

以下是符合任务要求的正确代码:

#include <stdio.h>

int main() {
    // 用double类型存储高精度浮点数,比float更适配任务中的数值精度需求
    double num1 = 456.87654321;
    double num2 = 0.17023;
    double num3 = 443.14159;

    // 使用%.3f格式符打印,自动保留三位小数并四舍五入
    printf("%.3f\n", num1);
    printf("%.3f\n", num2);
    printf("%.3f\n", num3);

    return 0;
}

运行后会输出:

456.877
0.170
443.142

补充说明:

  • double类型能更好地保留浮点数精度,避免不必要的计算误差
  • %.3f会对第四位小数进行四舍五入,所以456.87654321最终显示为456.877,443.14159显示为443.142,0.17023保留三位小数为0.170

内容的提问来源于stack exchange,提问作者DirtyFan2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:55:15