我试图计算一个百分比值,如下所示,其中count
和size
是整数:
var percent = count * 100 / size as int;
但是我收到一个警告,上面写着“避免使用as”。我想百分比是整数类型。如何重写此内容以避免使用“as”?
除了Alexandre Ardhuin的回答:
据我所知,dart在施法方面没有那么灵活,因此不建议使用(在这种情况下甚至不允许)。
您可以使用round()函数来代替:
int count = 1;
int size = 3;
var percent = (count * 100 / size);
print(percent);
int asInt = percent.round();
print(asInt);
或者,如果您想要典型的interger舍入
,请使用ground():
int count = 1;
int size = 3;
var percent = (count * 100 / size);
print(percent);
int asInt = percent.floor();
print(asInt);
注意:在这些示例中,百分比是双精度,可以存储以供以后使用。
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
哎呀,事实证明我不能使用“作为int”,因为int不是double的子类。相反,我需要使用round()方法,该方法返回一个int,如下所示:
var percent = (count * 100 / size).round();
您可以使用截断除法运算符 ~/
来执行所需的操作。
var percent = count * 100 ~/ size;
问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon
问题内容: 我正在实现一个接口,该接口的功能类似于可以包含某种对象的表的功能。该接口指定以下功能: 在我的实现中,我感到很困惑的是,我将表数据存储在2D 数组()中。当我需要返回值时,我想执行以下操作(假定只在包含double的列上调用,因此将没有): 但是- Java不允许强制转换为。将其强制转换为可以,因为它是一个对象,而不是基元,但是我的接口指定数据将以形式返回。 所以我有两个问题: 有什么
问题内容: 所以我的问题是:为什么不执行编译错误? 问题答案: 四种情况中的三种正确报告了错误。复合分配是该规则的唯一例外。Java语言规范,第15.26.2部分,解释了以下原因: 15.26.2复合赋值运算符 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 例如,以下代码是正确的: 并导致x的值为7,因为它等效于: 如您所见,通过隐式插入强制类型转换可以避免该错误。
考虑此代码段: 在我的机器上运行这个会打印两个转换的。但是和只能是吗? 据我所知,这是一个扩展的原语转换,规范中说: 拓宽的基元转换不会丢失有关数值的整体大小的信息。 以及 将int或long值加宽为float或将long值加宽为double可能会导致精度损失 据我所知,上述规范意味着将始终成为,但可以转换为其他内容(例如或类似内容)。我的规格解释正确吗?
问题内容: 我编写的这段代码将转换为获取异常。 这是我的代码 问题答案: 是基元之上的 包装 类。可以将其强制转换为,但不能直接强制转换为。 如果使用代替,它将编译: 您也可以在中间添加演员表,如下所示:
问题内容: 如何将值转换为执行以下操作: 也就是说,答案总是四舍五入。 问题答案: 如果你明确地 投 来,小数部分将被截去。例如: 此外,如果需要返回值,也可以使用方法舍入值。