Я использовал следующую строку для преобразования float в int, но это не так точно, как хотелось бы:
float a=8.61f;
int b;
b=(int)a;
Результат: 8
(должно быть 9
)
Когда a = -7.65f
, результат: -7
(должно быть -8
)
Какой лучший способ сделать это?
java
floating-point
int
Фрэнк
источник
источник
Ответы:
Использование
Math.round()
округляет число с плавающей точкой до ближайшего целого числа.источник
Math.round()
возвращаетint
значение, так что использование типов при добавлении(int)
является избыточным.(int)foo
проще.На самом деле, есть разные способы понизить значение float до int, в зависимости от того, какого результата вы хотите достичь: (для int
i
, floatf
)round (ближайшее целое число к заданному float)
примечание: по договору это равно
(int) Math.floor(f + 0.5f)
усечь (т.е. отбросить все после десятичной точки)
ceil / floor (целое число всегда больше / меньше заданного значения, если оно имеет дробную часть)
Для округления положительных значений вы также можете просто использовать
(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
для получения дополнительной информации и некоторых примеров.
источник
Math.round(value)
округлить значение до ближайшего целого числа.использование
источник
Math.round также возвращает целочисленное значение, поэтому вам не нужно типизировать.
источник
Используйте
Math.round(value)
затем после типа приведите его к целому числу.источник
Как по мне, проще: (int) (a +.5) // a это Float. Вернуть округленное значение.
Не зависит от типов Java Math.round ()
источник
-(int) ( PI / 3 )
: попробуйте свой код с отрицательнымa
... с каких пор-0.5
округляет до0
?