반올림하여 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 = 1
및 y = 1
)을 반환합니다 .
int x = (int)(a); // This equals (int)(1.2) --> 1
int y = (int)(b); // This equals (int)(1.8) --> 1
그러나 각각에 0.5를 더하면 경우에 따라 원하는 가장 가까운 정수로 반올림 한 결과 를 얻을 수 있습니다 ( x = 1
및 y = 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
.
'program tip' 카테고리의 다른 글
ng : angular-cli를 사용하여 새 프로젝트를 만드는 동안 명령을 찾을 수 없습니다. (0) | 2020.10.31 |
---|---|
C #에서 자정 DateTime을 만드는 가장 좋은 방법 (0) | 2020.10.31 |
폴더의 파일 수 (0) | 2020.10.31 |
사전에 전달 된 모델 항목은 'mvc.Models.ModelA'유형이지만이 사전에는 'mvc.Models.ModelB'유형의 모델 항목이 필요합니다. (0) | 2020.10.31 |
jQuery Mobile : 바닥 글을 페이지 하단에 고정 (0) | 2020.10.31 |