先按单精度读入,再用 int 向零截断得到整数部分。
OJ: noi_openjudge
题目 ID: ch0102-06
难度:入门
标签:浮点数类型转换python
日期: 2026-07-30 23:01
题意
读入一个单精度浮点数,向零舍入为整数。正数舍去小数部分,负数也向零靠近。
思路
Python 的 int(value) 正是向零截断:int(2.9) 为 2,int(-2.9) 为 -2,不要用 round 或 math.floor。题目指定单精度,代码先用 struct 完成与 C++ float 相同的一次单精度舍入,再转换为整数。
代码
Python代码
python
from struct import pack, unpack
# 按题目先读成 C++ float,再用 int 向零截断。
value = unpack("f", pack("f", float(input())))[0]
print(int(value))C++代码
这里保留原有的 C++ 参考实现。
cpp
#include <cstdio>
int main(){
float a;
scanf("%f",&a);
printf("%0.0f",a);
return 0;
}复杂度
时间复杂度和额外空间复杂度均为
总结
记住 Python 的 int 是向零截断;它与负数的下取整不同。