输出保留3位小数的浮点数

GitHub跳转原题关系图返回列表

先按单精度 float 舍入,再用 .3f 固定输出三位小数。

OJ: noi_openjudge

题目 ID: ch0101-04

难度:入门

标签:浮点数输出python

日期: 2026-07-30 23:01

题意

读入一个单精度浮点数,按固定小数点格式输出,且小数点后恰好保留 3 位。

思路

f"{value:.3f}" 中的 .3f 表示固定小数点格式并保留 3 位,末尾的零也会保留。

Python 的 float 是双精度,而题目明确规定输入是单精度。代码先用 struct.packstruct.unpack 完成一次 IEEE 754 单精度舍入,再格式化输出;这样靠近舍入边界的数据也和 C++ 的 float 一致。

代码

Python代码

python
from struct import pack, unpack

# 题目规定读入单精度浮点数,先按 IEEE 754 单精度舍入以匹配 C++ 的 float。
value = unpack("f", pack("f", float(input())))[0]
print(f"{value:.3f}")

C++代码

这里保留原有的 C++ 参考实现。

cpp
#include <bits/stdc++.h>
using namespace std;

int main()
{

    float a;
    cin>>a;
    cout<<fixed<<setprecision(3)<<a<<endl;
    return 0;
}

复杂度

只读写一个数,时间复杂度为 O(1)O(1),额外空间复杂度为 O(1)O(1)

总结

.3f 解决的是输出位数;题面出现“单精度”时,还要留意 Python 双精度 float 与 C++ float 的存储精度不同。