You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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.25
    
  • decimal包精确计算法
    借助第三方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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:24:54