Flutter(Dart)中如何将double类型值转换/取整为int或String类型
Dart中double类型转无小数位int/字符串实现方法
replaceAll是字符串类型的专属方法,直接对double类型数值调用会触发类型错误,这是之前操作不生效的核心原因。实现无小数位转换优先使用Dart内置的数值方法即可,不需要手动截取字符串。
转换为int类型
根据实际需要的取整规则,直接调用double对应的内置方法即可:
- 截断取整:直接丢弃所有小数位,不做进位处理,最贴合"仅获取不带小数位数值"的基础需求,使用
toInt()方法
final dblValue = 25.5; // 输出结果为25,直接舍弃.5的小数部分 final int truncateResult = dblValue.toInt();
- 四舍五入取整:根据小数位数值判断是否进位,使用
round()方法
// 25.5调用后结果为26,25.4调用后结果为25 final int roundResult = dblValue.round();
- 向上取整:只要存在小数位,就向数值更大的方向进位,使用
ceil()方法
// 25.1调用后结果也为26,-25.9调用后结果为-25 final int ceilResult = dblValue.ceil();
- 向下取整:只要存在小数位,就向数值更小的方向舍位,使用
floor()方法
// 25.9调用后结果也为25,-25.1调用后结果为-26 final int floorResult = dblValue.floor();
转换为不带小数位的String类型
两种常用实现方案:
- 先按业务需求选择对应规则取整为int类型,再转字符串,逻辑严谨不会出现异常格式
// 以截断取整为例,输出结果为"25" final String int2strResult = dblValue.toInt().toString();
- 如果不需要做数值层面的取整,仅需硬截取小数点前的文本内容,先将double转为字符串再分割即可
// 转字符串后按小数点分割,取第一段内容,输出结果为"25" final String splitStrResult = dblValue.toString().split('.')[0];
注意:浮点数存在固有精度误差,如果是金额等对精度要求极高的场景,不要直接用double做转换计算,建议使用专门的高精度数值类型处理。
内容的提问来源于stack exchange,提问作者pluto
相关产品推荐
相关产品推荐

