dart 如何在Flutter中对双精度值取整

nhn9ugyo  于 2022-12-20  发布在  Flutter
关注(0)|答案(4)|浏览(208)

有没有办法对双精度值进行舍入?
我希望结果总是四舍五入。

int offSet = (totalRecords / 10).round();
zmeyuzjn

zmeyuzjn1#

它是ceil
返回不小于此值的最小整数。

int offSet = (totalRecords / 10).ceil();
ha5z0ras

ha5z0ras2#

这里我把它四舍五入到下一个二进制数或下一个0.5示例:如果为6.6,则四舍五入为7.0。如果为6.2,则四舍五入为6.5。参见以下代码:

String arredonde(String n) {
final List x = n.split('.'); //break in to a list
if (x.length > 1) { //if its 0, then its already a rounded number or integer
  int fstNmbr = int.parse(x[0]);
  final int lstNmbrs = int.parse(x[1]);
  if (lstNmbrs > 5) {
    fstNmbr = fstNmbr + 1;
    final String finalNumber = fstNmbr.toStringAsFixed(1);
    return finalNumber;
  } else {
    if (lstNmbrs != 0) {
      final double finalNumber = fstNmbr + 0.5;
      return finalNumber.toStringAsFixed(1);
    } else {
      return n;
    }
  }
} else {
  return n;
}
}
gc0ot86w

gc0ot86w3#

试试

num.parse((totalRecords / 10).toStringAsFixed(3))

如果您需要3位小数

ni65a41a

ni65a41a4#

现在你有了你想要的东西。我选sup到5四舍五入,如果你想的话,

num offSet = (totalRecords / 10);
var eval = offSet.toStringAsFixed(1).split('.');
var res =
    int.parse(eval[1]) > 5 ? int.parse(eval[0]) + 1 : int.parse(eval[0]);
print(res);

相关问题