[java] Java로 float를 int로 변환하는 방법

float를 int로 변환하기 위해 다음 줄을 사용했지만 원하는만큼 정확하지 않습니다.

 float a=8.61f;
 int b;

 b=(int)a;

그 결과는 다음과 같습니다 8(그것은해야한다 9)

a = -7.65f결과가 : -7(이 있어야한다 -8)

가장 좋은 방법은 무엇입니까?



답변

를 사용 Math.round()하면 float를 가장 가까운 정수로 반올림합니다.


답변

실제로 달성하려는 결과에 따라 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

더 많은 정보와 예제가 있습니다.


답변

Math.round(value) 값을 가장 가까운 정수로 반올림합니다.

사용하다

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

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


답변

Math.round는 정수 값도 반환하므로 타입 변환 할 필요가 없습니다.

int b = Math.round(float a);


답변

Math.round(value)그런 다음 형식을 사용 하여 정수로 캐스트하십시오.

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


답변

나에 관해서는 : (int) (a +.5) // a는 Float입니다. 반올림 된 값을 반환합니다.

Java Math.round () 유형에 의존하지 않음


답변