1 条题解

  • 0
    @ 2025-9-16 1:07:41

    C++ 请尝试C or Python, C++输出为 1.234568e+01 避坑!!!避坑!!!避坑!!!

    核心逻辑

    需按四种格式输出双精度浮点数,关键是理解每种格式的规则:

    1. %f:默认保留6位小数,自动四舍五入;
    2. %f(保留5位小数):指定保留5位小数,四舍五入;
    3. %e:科学计数法,默认保留6位有效数字,指数部分带符号(如1.234568e+001);
    4. %g:自动保留6位有效数字,去除尾部无意义的零,不显示多余小数。

    代码实现

    C

    #include <stdio.h>
    
    int main() {
        double x;
        scanf("%lf", &x);  // 读取双精度浮点数(%lf对应double)
        
        // 按四种格式依次输出,各占一行
        printf("%f\n", x);       // 1. 默认%f(6位小数)
        printf("%.5f\n", x);     // 2. %f保留5位小数
        printf("%e\n", x);       // 3. %e(科学计数法)
        printf("%g\n", x);       // 4. %g(自动去尾零,6位有效数字)
        
        return 0;
    }
    

    C++

    请尝试C or Python, C++输出为 1.234568e+01

    避坑!!!避坑!!!避坑!!!

    Python

    x = float(input())  # 读取双精度浮点数(Python float本质是双精度)
    
    # 1. %f格式(默认6位小数)
    print("{0:f}".format(x))
    # 2. %f保留5位小数
    print("{0:.5f}".format(x))
    # 3. %e格式(科学计数法,6位有效数字)
    print("{0:e}".format(x))
    # 4. %g格式(自动去尾零,6位有效数字)
    print("{0:g}".format(x))
    

    验证(样例输入12.3456789

    格式 计算过程 输出结果
    %f(6位小数) 12.3456789 四舍五入到6位小数 12.345679
    %.5f(5位) 12.3456789 四舍五入到5位小数 12.34568
    %e(科学计数) 6位有效数字,科学计数法表示 1.234568e+001(C++为1.234568e+01)
    %g(去尾零) 6位有效数字,去除尾部零 12.3457

    所有输出均与样例一致,符合格式要求。

    • 1

    信息

    ID
    453
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    21
    已通过
    10
    上传者