数学楼混合类型错误?

时间:2016-08-28 09:37:01

标签: java

我有这个:

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”。我如何以正确的方式投射变量..我缺少什么?

1 个答案:

答案 0 :(得分:2)

Math.floor只有一个重载:double Math.floor(double)。这总是会返回一个双倍。

您需要明确地将其转换为int

temp = (int) Math.floor(...);

但请注意,它可能有损:double可以存储的值太大而无法存储在int中。因此,通过适当地约束输入,确保double的值介于Integer.MIN_VALUEInteger.MAX_VALUE之间,您需要确保它不是一个有损操作。

或者,重新排列计算,以便您可以在整数数学中完成所有操作。