从double转换为int时,如何避免使用'as'?

时间:2018-09-26 14:00:36

标签: dart

我正在尝试如下计算百分比值,其中countsize是整数:

var percent = count * 100 / size as int;

但是我收到一条警告,提示“避免使用as”。我想成为一个整数类型。我该如何重写以避免使用'as'?

3 个答案:

答案 0 :(得分:4)

您可以使用截断除法运算符~/来完成所需的操作。

var percent = count * 100 ~/ size;

答案 1 :(得分:1)

糟糕,事实证明我不能使用'as int',因为int不是double的子类。相反,我需要使用round()方法,该方法返回如下所示的int值:

    var percent = (count * 100 / size).round();

答案 2 :(得分:1)

除了Alexandre Ardhuin的答案:

据我所知,dart在投射方面不那么灵活,因此不建议使用(在这种情况下甚至不允许使用)。

您可以改用round()函数:

int count = 1;
int size = 3;
var percent = (count * 100 / size);
print(percent);

int asInt = percent.round();
print(asInt);

或者如果您想要典型的interger rounding,请使用floor()

int count = 1;
int size = 3;
var percent = (count * 100 / size);
print(percent);

int asInt = percent.floor();
print(asInt);

注意:在这些示例中,百分比是两倍,可以存储以备后用。


为了完整起见,包括ceil

int count = 2;
int size = 3;

var percent = (count * 100 / size);
print(percent);

int asIntRound = percent.round();
print(asIntRound);

int asIntFloor = percent.floor();
print(asIntFloor);

int asIntCeil = percent.ceil();
print(asIntCeil);

输出:

66.66666666666667
67
66
67