浮点数向零舍入

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

先按单精度读入,再用 int 向零截断得到整数部分。

OJ: noi_openjudge

题目 ID: ch0102-06

难度:入门

标签:浮点数类型转换python

日期: 2026-07-30 23:01

题意

读入一个单精度浮点数,向零舍入为整数。正数舍去小数部分,负数也向零靠近。

思路

Python 的 int(value) 正是向零截断:int(2.9)2int(-2.9)-2,不要用 roundmath.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;
}

复杂度

时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

记住 Python 的 int 是向零截断;它与负数的下取整不同。