在 Python 和 C++ 中,**int 强制转换(或构造函数)采用的是“截断取整”(Truncate),即直接丢弃小数部分,保留整数部分,不进行四舍五入**,向0舍入。


Python 中的 int() 强制转换

  • 行为:直接截断小数部分(向零取整)。
  • 示例
    1
    2
    print(int(3.7))# 输出: 3(直接丢弃 0.7)
    print(int(-2.9))# 输出: -2(直接丢弃 -0.9,不是 -3!)
  • 关键点
  • 对正数相当于向下取整(floor),但对负数相当于向上取整(ceil),本质是向零靠近
  • math.trunc() 行为完全一致:
    1
    2
    import math
    print(math.trunc(3.5))

对比总结

cmath库

方法 Python C++
向下取整 math.floor(x) std::floor(x)
向上取整 math.ceil(x) std::ceil(x)
四舍五入 round(x) std::round(x)
截断取整 math.trunc(x)int(x) std::trunc(x)
  • Python的round()函数在遇到.5时会向最近的偶数取整(银行家舍入法),而C++的std::round()会远离零。