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

Dart语言中floor()与toInt()方法截断小数时的区别是什么?

toInt()和floor()处理double取整的区别

两者存在明显区别,仅处理正double数值时结果一致,处理负数、边界值的逻辑完全不同:

  • toInt()的取整逻辑是朝0方向截断:直接去掉小数部分,只保留整数位,不会调整整数位的大小
    例:(-13.5).toInt()结果为-13,13.9.toInt()结果为13
  • floor()的取整逻辑是向下取整:永远向数值更小的方向取最接近的整数
    例:(-13.5).floor()结果为-14,13.9.floor()结果为13

代码验证示例

// 正数场景:两者返回结果一致
double positiveNum = 13.5;
int a = positiveNum.toInt(); // 13
int b = positiveNum.floor(); // 13

// 负数场景:两者返回结果完全不同
double negativeNum = -13.5;
int c = negativeNum.toInt(); // -13,符合「截断所有小数」的需求
int d = negativeNum.floor(); // -14

选型建议

如果你的需求是仅截断小数部分、不做四舍五入,直接选择toInt()即可,floor()仅适用于需要往数值更小方向取整的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:03