Dart语言中floor()与toInt()方法截断小数时的区别是什么?
toInt()和floor()处理double取整的区别 两者存在明显区别,仅处理正double数值时结果一致,处理负数、边界值的逻辑完全不同:
toInt()的取整逻辑是朝0方向截断:直接去掉小数部分,只保留整数位,不会调整整数位的大小
例:(-13.5).toInt()结果为-13,13.9.toInt()结果为13floor()的取整逻辑是向下取整:永远向数值更小的方向取最接近的整数
例:(-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
相关产品推荐
相关产品推荐

