You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中Float#floor与Float#to_i的区别是什么?

Ruby中floor(向下取整)与to_i(截断取整)的区别

你测试的正数场景下两者结果一致,但核心差异体现在负数的处理上:

行为差异

  • 对于正数:floor和to_i都会舍弃小数部分,返回整数部分,比如34.4.to_i和34.4.floor都返回34。
  • 对于负数:
    • Float#floor:向负无穷方向取最近的整数,也就是返回小于等于当前浮点数的最大整数。例如-34.4.floor会返回-35。
    • Float#to_i:直接截断小数部分,只保留整数位,相当于取浮点数的整数部分。例如-34.4.to_i会返回-34。

测试代码验证

# 正数场景
puts 34.4.to_i  # 输出 34
puts 34.4.floor # 输出 34

# 负数场景
puts -34.4.to_i  # 输出 -34
puts -34.4.floor # 输出 -35

总结

  • floor遵循“向下取整”逻辑,无论正负都找不大于当前数的最大整数
  • to_i是纯粹的截断操作,直接去掉小数部分,只保留整数位

内容的提问来源于stack exchange,提问作者Safwan Samsudeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:28:15