두 개의 정수 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;
답변
// 변환하려는 정수
int myInt = 100;
// 정수를 부동으로 캐스팅
float newFloat = (float) myInt
답변
방법은 다음과 같습니다.
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);
}
만나요!
답변
Sameer :
float l = new Float(x/y)
x와 y의 정수 나눗셈을 먼저 계산 한 다음 여기에서 부동 소수점을 생성하므로 작동하지 않습니다.
float result = (float) x / (float) y;
의미 상 가장 좋은 후보입니다.
답변
