【问题标题】:Dart - round down a double飞镖 - 向下取整
【发布时间】:2020-04-30 16:43:33
【问题描述】:

如何在 dart/flutter 中四舍五入:

int hours = int.parse((minutes/60).toStringAsFixed(0));

minutes/607.92,我希望结果是 7 但它会四舍五入到 8...

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    你可以同时使用Truncating division operator:

    int hours = minutes ~/ 60;
    

    或者floor method

    int hours = (minutes/60).floor();
    

    【讨论】:

    • 注意,正数会向下取整,负数会向上取整。如果你知道你需要处理负面消息,你可以这样做int hours = (minute/60).floor();
    • 最好澄清一下,截断除法总是向零舍入,floor() 总是向负无穷舍入。
    【解决方案2】:

    如果您需要以一定的精度四舍五入 - 使用这个:

    double roundDown(double value, int precision) {
        final isNegative = value.isNegative;
        final mod = pow(10.0, precision);
        final roundDown = (((value.abs() * mod).floor()) / mod);
        return isNegative ? -roundDown : roundDown;
      }
    

    roundDown(0.99, 1) => 0.9

    roundDown(-0.19, 1) => -0.1

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多