Dart中保留double类型去除小数部分后显示.0的问题
解决Dart中保留Double类型且优化小数部分显示的问题
一、直接获取整数形式的Double值(无需字符串中转)
不用先转字符串再解析,直接利用Dart内置的数值处理方法,根据你的取舍规则选择:
- 四舍五入(匹配你原
toStringAsFixed(0)的行为):使用roundToDouble()double num = 333.5; double result = num.roundToDouble(); // 得到334.0(Double类型) - 直接截断小数(不四舍五入):使用
truncateToDouble()double num = 333.5; double result = num.truncateToDouble(); // 得到333.0(Double类型) - 向下取整:使用
floorToDouble()double num = 333.5; double result = num.floorToDouble(); // 得到333.0(Double类型) - 向上取整:使用
ceilToDouble()double num = 333.5; double result = num.ceilToDouble(); // 得到334.0(Double类型)
二、消除显示时的.0后缀
Double类型的整数形式本质就是x.0,DartPad和你的开发环境显示差异源于两者的字符串格式化逻辑不同。要在显示时去掉.0,只需在输出/展示环节做处理,不改变Double类型本身:
double result = 334.0; // 方法1:判断是否为整数后转换 String displayStr = result == result.toInt() ? result.toInt().toString() : result.toString(); // 方法2:直接替换后缀(适合确定是整数形式的Double) String displayStr = result.toString().replaceAll('.0', '');
两种方法都会得到"334"的显示字符串,同时你依然可以传递原始的Double类型数值。
内容的提问来源于stack exchange,提问作者flutter
相关产品推荐
相关产品推荐

