Flutter (Dart) 如何将double类型数值四舍五入到最近的0.5?
Dart 实现 double 数值四舍五入到最近 0.5 的方案
实现思路
- 核心逻辑:将原数值乘以2后调用系统原生的四舍五入方法取整,再将结果除以2即可得到符合要求的数值
- 原理是把0.5的精度间隔放大为整数间隔,直接复用Dart原生的成熟四舍五入能力,避免自行写边界判断逻辑出错
代码实现
// 封装为公用方法 double roundToNearestHalf(double value) { return (value * 2).round() / 2; } // 测试用例 void main() { var value1 = 23.2; var value2 = 23.6; var value3 = 23.8; print(roundToNearestHalf(value1)); // 输出 23.0 print(roundToNearestHalf(value2)); // 输出 23.5 print(roundToNearestHalf(value3)); // 输出 24.0 }
补充说明
如果输入值恰好处于两个0.5间隔的正中间(比如23.25),会按照Dart原生round()方法的规则取最近的偶数,符合通用的四舍五入规范。如果业务有特殊的舍入要求,替换round()为ceil()、floor()等方法即可适配。
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

