【问题标题】:How to convert 100.00 to 100 and 100.23 to 100.23 dart如何将 100.00 转换为 100 和 100.23 转换为 100.23 飞镖
【发布时间】:2021-02-04 08:20:54
【问题描述】:

如何将 100.00 或 100.0 转换为 100,如果数字为 100.23,则应保持与 100.23 相同。

在 dart 中,我测试了 floor() 和 round() 这些函数,即使数字是 100.23,它们也会返回 100。

如何解决?

谢谢

【问题讨论】:

    标签: flutter dart double


    【解决方案1】:

    通过使用flutter的intl包来格式化数字。请参考下面

    import 'package:intl/intl.dart' as intl;
    
      @override
      void initState() {
        var valueFormat = intl.NumberFormat.decimalPattern();
        print(valueFormat.format(100.234));
        print(valueFormat.format(100.00));
      }
    

    输出

    I/flutter ( 5364): 100.234
    I/flutter ( 5364): 100
    

    【讨论】:

    • 这里有一个问题,如果你尝试发送 valueFormat.format(4458.3333333333) 它返回 4,458.333 这是错误,它是逗号和点。如何解决?
    • 逗号和点是标准格式,可以通过正则表达式解析。
    【解决方案2】:
    double input1 = 100.00;  //100
    double input2 = 100.0; //100
    double input3 = 100.23; //100.23
    
    RegExp regex = RegExp(r"([.]*0)(?!.*\d)");
    
    String str = input1.toString().replaceAll(RegExp(r"([.]*0)(?!.*\d)"), "");
    

    【讨论】:

    【解决方案3】:

    在您得到更好的答案之前,您可以执行以下步骤:

    double value = 100.32739273;
    String formattedValue = value.toStringAsFixed(2);
    
    print(formattedValue);
    
    if (formattedValue.endsWith(".00")) {
      formattedValue = formattedValue.replaceAll(".00", "");
    }
    
    print(formattedValue);
    

    【讨论】:

    • 谢谢,我想实现这样的东西,但我正在搜索 dart 中是否有内置函数可以做同样的事情。
    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 2020-01-16
    • 2020-04-18
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多