Я не знаю, почему результат округления java. Я использовал casting для float, я добавлял '.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
'/ 4' является ** целочисленным разделителем **, независимо от того, отбрасываете ли вы верхнюю часть фракции на поток. Вы должны делить на '4.0f', чтобы получить желаемый результат. –
Это не работает, даже я добавляю, как вы говорите – GarryMoveOut
Нет, ваш пример неправильный. rpm = (A * 255 + B) /4.0 = (18 * 255 + 226) /4.0 = 4816/4.0 = 1204.0 Используя значения примера, результат * равен * 1204. –