program tip

반올림하여 Java에서 double을 int로 캐스팅하는 방법은 무엇입니까?

radiobox 2020. 10. 31. 09:32
반응형

반올림하여 Java에서 double을 int로 캐스팅하는 방법은 무엇입니까?


Java에서 double을 int로 캐스팅해야하지만 숫자 값은 항상 내림해야합니다. 즉 99.99999999-> 99


int로 캐스팅하면 암시 적으로 모든 소수가 삭제됩니다. Math.floor ()를 호출 할 필요가 없습니다 (양수 가정).

간단히 (int)로 타입 캐스트합니다. 예 :

System.out.println((int)(99.9999)); // Prints 99

즉, Math.floor음의 무한대로 반올림 하는 것과는 다른 동작이 있습니다 (@Chris Wong).


int로 더블 캐스팅과는 가장 가까운 정수로 반올림해야합니다 (전형적인 달리 예 (int)(1.8)(int)(1.2)0과 복귀를 향한 모두 "라운드 다운"할, 1,) 단순히 0.5을 추가 double당신이에 형태 캐스트 것이다int .

예를 들어

double a = 1.2;
double b = 1.8;

그런 다음 x 및 y에 대한 다음 형변환 ​​표현식은 반올림 된 값 ( x = 1y = 1)을 반환합니다 .

int x = (int)(a);   // This equals (int)(1.2) --> 1
int y = (int)(b);   // This equals (int)(1.8) --> 1

그러나 각각에 0.5를 더하면 경우에 따라 원하는 가장 가까운 정수로 반올림 한 결과얻을 수 있습니다 ( x = 1y = 2).

int x = (int)(a + 0.5);   // This equals (int)(1.8) --> 1
int y = (int)(b + 0.5);   // This equals (int)(2.3) --> 2

작은 메모로 ,이 방법을 사용하면 형변환 시 반올림 또는 반올림 되는 임계 값 을 제어 할 수도 있습니다 .double(int)

(int)(a + 0.8);

typecast합니다. (int)a + 1소수점 값이 0.2보다 크거나 같을 때만 반올림됩니다 . 즉, double타입 캐스팅 직전에 0.8을 더하면 10.15와 10.03은 (int)타입 캐스팅 시 10으로 반 내림 되지만 10.23과 10.7은 11로 반올림됩니다.


(int) 99.99999

99가됩니다. double을 int로 캐스팅하는 것은 반올림되지 않으며 분수 부분을 버립니다.


Math.floor(n)

여기서 n은 double입니다. 이것은 실제로 double을 반환 할 것입니다. 따라서 나중에 typecast했는지 확인하십시오.


이것은 잘 작동합니다 int i = (int) dbl;


new Double(99.9999).intValue()


이것으로 시도해보십시오. 이것은 간단합니다

double x= 20.22889909008;
int a = (int) x;

this will return a=20

또는 이것을 시도하십시오 :-

Double x = 20.22889909008;
Integer a = x.intValue();

this will return a=20

또는 이것을 시도하십시오 :-

double x= 20.22889909008;
System.out.println("===="+(int)x);

this will return ===20

이 코드가 도움이 될 수 있습니다.


Math.floor를 사용해보십시오.


이 질문에서 :

1. double을 정수로 캐스팅하는 것은 매우 쉬운 작업입니다.

2. 그러나 double 값을 가장 가까운 십진수로 반올림하지 않습니다. 따라서 캐스팅은 다음과 같이 수행 할 수 있습니다.

double d=99.99999999;
int i=(int)d;
System.out.println(i);

인쇄 99되지만 반올림이 수행되지 않았습니다.

따라서 반올림을 위해 사용할 수 있습니다.

double d=99.99999999;
System.out.println( Math.round(d));

이것은의 출력을 인쇄합니다 100.

참고 URL : https://stackoverflow.com/questions/2143476/how-to-cast-a-double-to-an-int-in-java-by-rounding-it-down

반응형