Как конвертировать float в int с помощью Java



я использовал следующую строку для преобразования float в int, но это не так точны, как хотелось бы:



 float a=8.61f;
int b;

b=(int)a;


результат : 8 (Он должен быть!--2-->)



, когда a = -7.65f результат : -7 (Он должен быть!--5-->)



каков наилучший способ сделать это ?

748   6  

6 ответов:

С помощью Math.round() округлит поплавок до ближайшего целого числа.

на самом деле, есть разные способы понизить float до 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 в этих случаях (согласно doc).

в теории вы могли бы использовать Math.rint(f) чтобы сделать закругления, но rint не округляет 0.5 вверх, он округляет его вверх или вниз, в зависимости от того, какое из нижнего или верхнего целого числа четное, поэтому оно бесполезно в большинстве случаи.

посмотреть

http://mindprod.com/jgloss/round.html

http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html

для получения дополнительной информации и некоторые примеры.

Math.round(value) округляют значение до ближайшего целого числа.

использовать

1) b=(int)(Math.round(a));

2) a=Math.round(a);  
   b=(int)a;

использовать Math.round(value) затем после типа приведите его к целому числу.

float a = 8.61f;
int b = (int)Math.round(a);

математика.round также возвращает целочисленное значение, поэтому вам не нужно набирать текст.

int b = Math.round(float a);

Как мне, проще:(int) (a +.5) // a-это поплавок. Возвращает округленное значение.

не зависит от Java Math.круглые () типы

Comments

    Ничего не найдено.