如何在Flutter(Dart)中将数字保留指定小数位数并四舍五入?
在Flutter(Dart)中实现8.245四舍五入为8.25的方法
由于Dart中浮点数的精度特性,直接使用roundToDouble()处理8.245时,可能因为实际存储值接近8.244999999999999而得到8.24,以下是几种可行的解决方法:
字符串格式化转换法
利用toStringAsFixed(2)按四舍五入规则生成两位小数的字符串,再转回数值:double original = 8.245; double result = double.parse(original.toStringAsFixed(2)); // 输出结果为8.25decimal包精确计算法
借助第三方decimal包处理十进制精度问题,避免浮点数误差:import 'package:decimal/decimal.dart'; void main() { Decimal original = Decimal.parse('8.245'); Decimal result = original.round(scale: 2); print(result); // 输出8.25 }使用前需在
pubspec.yaml中添加decimal依赖(版本号以最新为准)并执行pub get。手动修正精度计算法
通过放大数值后四舍五入,同时添加极小值修正浮点数误差:double original = 8.245; double result = (original * 100 + 1e-10).roundToDouble() / 100; // 输出结果为8.25加入
1e-10是为了抵消浮点数存储时的微小偏差,确保近似值能被正确四舍五入。
内容的提问来源于stack exchange,提问作者Hoang
相关产品推荐
相关产品推荐

