Java에서 정수를 float로 어떻게 변환 할 수 있습니까?
두 개의 정수 x
와 y
. 나는 계산해야하고 x/y
결과로 나는 부유물을 얻고 싶습니다. 예를 들어 결과로 3/2
1.5를 갖고 싶습니다. 나는 쉬운 (또는 유일한) 방법은 그것을 변환하는 것입니다 할 생각 x
과 y
플로트 식으로. 안타깝게도 쉬운 방법을 찾을 수 없습니다. 저를 도와 주 시겠어요?
피연산자 중 하나 이상을 float 로 캐스트 하면됩니다.
float z = (float) x / y;
또는
float z = x / (float) y;
또는 (불필요)
float z = (float) x / (float) y;
꼭 필요한 경우가 아니면 float를 사용하면 안됩니다. 99 %의 경우 double이 더 나은 선택입니다.
int x = 1111111111;
int y = 10000;
float f = (float) x / y;
double d = (double) x / y;
System.out.println("f= "+f);
System.out.println("d= "+d);
인쇄물
f= 111111.12
d= 111111.1111
@Matt의 의견에 따라.
float는 정밀도가 매우 낮고 (6-7 자리) 상당히 쉽게 반올림 오류를 나타냅니다. double에는 또 다른 9 자리의 정확도가 있습니다. float 대신 double을 사용하는 비용은 99 %의 경우 명목상이지만 반올림 오류로 인한 미묘한 버그 비용은 훨씬 더 높습니다. 이러한 이유로 많은 개발자는 부동 소수점을 전혀 사용하지 않는 것이 좋으며 BigDecimal을 강력히 권장합니다.
그러나 합리적인 반올림이 사용되는 경우 대부분의 경우 double을 사용할 수 있습니다 .
이 경우 int x는 32 비트 정밀도를 갖는 반면 float는 24 비트 정밀도를 가지며 1로 나누어도 반올림 오류가 발생할 수 있습니다. 반면 double은 53 비트의 정밀도를 가지고 있으며 이는 합리적으로 정확한 결과를 얻기에 충분합니다.
추가 계산에 참여하기 전에 첫 번째 값을 float로 전송하기 만하면됩니다.
float z = x * 1.0 / y;
방법은 다음과 같습니다.
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 3;
int y = 2;
Float fX = new Float(x);
float res = fX.floatValue()/y;
System.out.println("res = "+res);
}
만나요!
// 변환하려는 정수
int myInt = 100;
// 정수를 부동으로 캐스팅
float newFloat = (float) myInt
Sameer :
float l = new Float(x/y)
x와 y의 정수 나눗셈을 먼저 계산 한 다음 여기에서 부동 소수점을 생성하므로 작동하지 않습니다.
float result = (float) x / (float) y;
의미 상 가장 좋은 후보입니다.
참고 URL : https://stackoverflow.com/questions/4377842/how-can-i-convert-integer-into-float-in-java
'IT TIP' 카테고리의 다른 글
map 및 join을 사용하여 반응 구성 요소를 렌더링하는 방법 (0) | 2020.10.18 |
---|---|
Java에서 스레드가 실행 중인지 어떻게 확인합니까? (0) | 2020.10.18 |
'DateTime'이 'Nothing'인지 왜 확인할 수 없습니까? (0) | 2020.10.18 |
Python : 목록에서 첫 번째 문자열의 첫 번째 문자를 얻습니까? (0) | 2020.10.18 |
EGIT를 사용하여 원격 저장소에서 분기를 삭제하는 방법은 무엇입니까? (0) | 2020.10.18 |