我不知道为什么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
答案 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
第一个不起作用,因为你发现了。但是其他解决方案都有效。