我有这个:

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行中看到错误:“不兼容的类型:可能从双精度转换为整数”。我如何以正确的方式转换变量..我缺少什么?

最佳答案

Math.floor仅具有一个重载:double Math.floor(double)。总是返回双倍。

您需要将其显式转换为int

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


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

或者,重新安排您的计算,以便您可以用整数数学完成所有操作。

关于java - 数学地板混合类型错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39189899/

10-12 00:11