Java에서 2배에서 정수로 변환
자바에서는 더블을 정수로 변환하고 싶은데 다음과 같이 하면 알 수 있습니다.
double x = 1.5;
int y = (int)x;
y=1이 됩니다.이렇게 하면:
int y = (int)Math.round(x);
2개 나올 것 같아요.단, 정수의 이중 표현은 1.9999998처럼 보일 수 있기 때문에 Math.round()를 통해 작성된 이중을 캐스팅하면 찾고 있는 반올림수(예: 코드에서 2가 아닌 1)가 잘려나갈 가능성이 있습니까?
(그리고 네, 그런 의미입니다.x에 대한 값이 있나요?여기서 y는 x의 반올림된 표현이 아닌 잘린 결과를 나타냅니다.)
그렇다면: 절단 위험을 감수하지 않고 둥근 인트로 더블을 만드는 더 좋은 방법이 있을까요?
수치: math.round(x)는 2배가 아닌 긴 값을 반환합니다.따라서 Math.round()는 3.999998과 같은 숫자를 반환할 수 없습니다.따라서 int(Math.round())는 아무것도 자를 필요가 없으며 항상 동작합니다.
이 둘을 통해 창조된 더블을 캐스팅할 가능성이 있나요?
Math.round()
그래도 숫자가 잘려나갑니다.
아니요.round()
항상 올바른 값으로 더블을 반올림하고, 그 다음, 그것은 에 캐스팅됩니다.long
소수점 이하가 잘립니다.그러나 반올림 후에는 프랙셔널 부품이 남아 있지 않습니다.
의 문서는 다음과 같습니다.
인수에 가장 가까운 길이를 반환합니다.결과는 1/2를 더하고 결과의 바닥을 찍은 다음 길게 입력함으로써 정수로 반올림됩니다.즉, 결과는 식 값과 동일합니다.
(long)Math.floor(a + 0.5d)
데이터 유형의 경우Double
로.int
다음 항목을 사용할 수 있습니다.
Double double = 5.00;
int integer = double.intValue();
Double perValue = 96.57;
int roundVal= (int) Math.round(perValue);
내 목적을 해결했다.
언급URL : https://stackoverflow.com/questions/6468730/converting-double-to-integer-in-java
'programing' 카테고리의 다른 글
for loop 동안 목록 엔트리를 수정하려면 어떻게 해야 합니까? (0) | 2023.01.21 |
---|---|
카운터를 값별로 정렬하는 방법- 비단뱀 (0) | 2023.01.01 |
테이블 형식 없이 SQL 쿼리 결과 가져오기 (0) | 2023.01.01 |
Python에서 다양한 날짜로 반복 (0) | 2023.01.01 |
String을 Title Case로 변환하는 방법이 있나요? (0) | 2023.01.01 |