首页 > 解决方案 > 如何在飞镖中将双精度值四舍五入到小数点后两位?

问题描述

我已经制作了这个方法,该方法被调用来执行功能并进行计算,但对于某些超过 10 个小数点的计算,以双精度格式返回数字。如何使此代码仅显示最多 2 或 3 个小数点?

getProductPrice(int productID) {
    var cart = cartlist.firstWhere((cart) => cart.product.id == productID,
        orElse: () => null);
    if (cart != null) {
      var price= (cart.count)*(cart.product.price);
      return price;
      notifyListeners();
    } else {
      return 0.0;
    }
  }

标签: flutterdartdoubledecimal-point

解决方案


您可以使用String toStringAsFixed(int fractionDigits)

  • 返回 this 的小数点字符串表示形式。

  • 在计算字符串表示之前转换this为双精度。

  • 如果 this 的绝对值大于或等于 10^21,则此方法返回由 this.toStringAsExponential() 计算的指数表示。否则,结果是最接近的字符串表示形式,小数点后正好有 fractionDigits 数字。如果 fractionDigits 等于 0,则省略小数点。

  • 参数 fractionDigits 必须是满足:0 <= fractionDigits <= 20 的整数。

例子:

1.toStringAsFixed(3);  // 1.000
(4321.12345678).toStringAsFixed(3);  // 4321.123
(4321.12345678).toStringAsFixed(5);  // 4321.12346
123456789012345678901.toStringAsFixed(3);  // 123456789012345683968.000
1000000000000000000000.toStringAsFixed(3); // 1e+21
5.25.toStringAsFixed(0); // 5

有关更多信息,请查看官方文档


推荐阅读