我有这个:
String a = tonsescolhidos.getValue().toString();
int tons = Integer.parseInt(a);
float distlevel = 256/(tons - 1);
int temp;
temp = Math.floor(((float) (tons / distlevel) + 0.5)*distlevel);
tons = temp;
我收到错误:“不兼容的类型:第5行中可能有损转换从double到int”。我如何以正确的方式投射变量..我缺少什么?
答案 0 :(得分:2)
Math.floor
只有一个重载:double Math.floor(double)
。这总是会返回一个双倍。
您需要明确地将其转换为int
:
temp = (int) Math.floor(...);
但请注意,它可能有损:double
可以存储的值太大而无法存储在int
中。因此,通过适当地约束输入,确保double
的值介于Integer.MIN_VALUE
和Integer.MAX_VALUE
之间,您需要确保它不是一个有损操作。
或者,重新排列计算,以便您可以在整数数学中完成所有操作。