【问题标题】:In Dart, how do you set the number of decimals in a double variable? [duplicate]在 Dart 中,如何设置 double 变量中的小数位数? [复制]
【发布时间】:2022-01-20 06:03:50
【问题描述】:

我想在 Dart 中设置一个双精度,我们称之为价格,这样它总是给我一个小数点后 2 位的双精度。

所以 2.5 将返回 2.50,而 2.50138263 也将返回 2.50。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    最简单的答案是 double 的内置 toStringAsFixed。

    你的情况

    double x = 2.5;
    print('${x.toStringAsFixed(2)}');
    x = 2.50138263;
    print('${x.toStringAsFixed(2)}');
    

    两者都会返回 2.50。请注意,这会截断(例如,2.519 返回 2.51)。它不使用标准的舍入(半偶数)银行家算法。

    我建议使用 intl 包中的 NumberFormat;解析和格式化规则值得学习,因为它们出现在 Java 等其他语言中。

    double d = 2.519;
    String s = NumberFormat.currency().format(d);
    print(s);
    

    返回 2.52 美元

    s = NumberFormat('#.00').format(d);
    

    返回 2.52

    由于您正在处理金钱,您可能应该使用NumberFormat.currency,这将添加当前语言环境的货币符号。

    【讨论】:

    • 谢谢。 NumberFormat.currency 是一个不错的建议。
    【解决方案2】:

    您的问题更多是关于 Dart 如何处理类型 double。根据您的用例,以下内容可能会起作用:

    void main() {
      double num = 2.50138263;
      
      num = double.parse(num.toStringAsFixed(2));
      
      print(num);
    }
    

    更多关于 Dart 如何处理 double 的信息可以在here找到。

    【讨论】:

    • 谢谢,我编辑了标题。我想将价格保持为双倍而不是将其转换为字符串。
    • 我明白了,我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多