先按单精度 float 舍入,再用 .3f 固定输出三位小数。
OJ: noi_openjudge
题目 ID: ch0101-04
难度:入门
标签:浮点数输出python
日期: 2026-07-30 23:01
题意
读入一个单精度浮点数,按固定小数点格式输出,且小数点后恰好保留 3 位。
思路
f"{value:.3f}" 中的 .3f 表示固定小数点格式并保留 3 位,末尾的零也会保留。
Python 的 float 是双精度,而题目明确规定输入是单精度。代码先用 struct.pack 与 struct.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;
}复杂度
只读写一个数,时间复杂度为
总结
.3f 解决的是输出位数;题面出现“单精度”时,还要留意 Python 双精度 float 与 C++ float 的存储精度不同。