圆形结果甚至可以投射浮动

时间:2015-12-23 19:21:42

标签: java

我不知道为什么java是舍入结果。我使用了cast来浮动,我添加'.0f'。什么都不想工作。我知道双分割更好,但我不需要非常精确的结果。

int A = Integer.parseInt(listBytesAnsw.get(2), 16); //ex. 18
int B = Integer.parseInt(listBytesAnsw.get(3), 16); //ex. 226
float rpm = (float) (A*255+B)/4; //Ans=1204 wrong, should be 1203.75

float rpm = (float) (A*255.0f+B)/4.0f; //dont work still 1204

1 个答案:

答案 0 :(得分:-1)

您得到的结果是预期的。毕竟:

255*226 = 4816
4816 / 4 = 1204

当然,如果确实存在非整数结果,则舍入然后转换将不起作用。请看下面的代码

System.out.println("(float)(7/4)=" + ((float)(7/4)));
System.out.println("(float)7/4=" + ((float)7/4));
System.out.println("(7+0.0f)/4=" + ((7+0.0f)/4));
System.out.println("7/(4+0.0f)=" + (7/(4+0.0f)));

结果

(float)(7/4)=1.0
(float)7/4=1.75
(7+0.0f)/4=1.75
7/(4+0.0f)=1.75

第一个不起作用,因为你发现了。但是其他解决方案都有效。