На самом деле, есть разные способы понизить значение float до int, в зависимости от того, какого результата вы хотите достичь: (для int i
, float f
)
round (ближайшее целое число к заданному float)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
примечание: по договору это равно (int) Math.floor(f + 0.5f)
усечь (т.е. отбросить все после десятичной точки)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
ceil / floor (целое число всегда больше / меньше заданного значения, если оно имеет дробную часть)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
Для округления положительных значений вы также можете просто использовать (int)(f + 0.5)
, что работает точно так же, как Math.Round
в тех случаях (согласно документу).
Вы также можете использовать Math.rint(f)
для округления до ближайшего четного числа ; возможно, это полезно, если вы планируете иметь дело с большим количеством операций с дробной частью, строго равной .5 (обратите внимание на возможные проблемы округления IEEE), и хотите сохранить среднее значение набора на месте; Вы будете вводить другое смещение, где четные числа будут более распространенными, чем нечетные.
Видеть
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
для получения дополнительной информации и некоторых примеров.