programing

Java에서 2배에서 정수로 변환

luckcodes 2023. 1. 1. 12:18

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