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 () 유형에 의존하지 않음