programing

Java에서 정수를 부동으로 변환하려면 어떻게 해야 합니까?

bestcode 2022. 9. 19. 23:48
반응형

Java에서 정수를 부동으로 변환하려면 어떻게 해야 합니까?

나는 두 개의 정수를 가지고 있다.x그리고.y계산해야 합니다.x/y그 결과 부유하고 싶습니다.예를 들어 의 결과로서3/21.5로 주세요.가장 쉬운(또는 유일한) 방법은 변환하는 것이라고 생각했습니다.x그리고.y플로트 타입으로 변환합니다.유감스럽게도, 나는 그것을 하는 쉬운 방법을 찾을 수 없다.그거 좀 도와주시겠어요?

피연산자 중 하나 이상을 플로트에 캐스팅하면 됩니다.

float z = (float) x / y;

또는

float z = x / (float) y;

또는 (표준)

float z = (float) x / (float) y;

// 변환할 정수

int myInt = 100;

// 플로트할 정수 주조

float newFloat = (float) myInt

첫 번째 값이 추가 계산에 포함되기 전에 부동할 값만 전송하면 됩니다.

float z = x * 1.0 / y;

꼭 필요한 경우가 아니면 플로트를 사용하면 안 됩니다.99%의 경우 더블이 더 좋습니다.

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%에 달하지만 반올림 오류로 인한 미묘한 버그 비용은 훨씬 높습니다.이러한 이유로 많은 개발자들은 부동 소수점을 전혀 사용하지 않을 것을 권장하며 Big Decimal을 강력히 권장합니다.

그러나 나는 합리적인 반올림을 사용한다면 대부분의 경우에 더블을 사용할 수 있다는 것을 알았다.

이 경우 int x의 정밀도는 32비트이고 float의 정밀도는 24비트이며 1로 나누어도 반올림 오차가 발생할 수 있습니다.반면 double의 정밀도는 53비트로 상당히 정확한 결과를 얻기에 충분합니다.

그 방법은 다음과 같습니다.

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);
}

다음에 또 봐요!

동일:

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

반응형