我有这个:
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_VALUE
和Integer.MAX_VALUE
之间,以确保它不是有损操作。或者,重新安排您的计算,以便您可以用整数数学完成所有操作。
关于java - 数学地板混合类型错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39189899/