배 정수, java 로 변환

Java 의 경우 정수, 배, I want to 변환하시겠습니까 그러니까말이야 이:

double x = 1.5;
int y = (int)x;

확보하십시오 y = 1. 이 경우:

int y = (int)Math.round(x);

39, ll get 2 you& 것으로 보인다. 그러나 나는 묻고 싶다. 이중 표현 때문에 가끔 뭔가 있을 가능성도 있다고 정수 비슷하게 1.9999999998 또는 더블 캐스팅 통해 생성된 마스트로런드 () 는 계속 발생할 수 있는 방안을 모색하는 것이 아니라 우리가 아래로 잘린 라운드된 숫자 (예: 1 로 표현할 수 있는 코드 2 대신)?

(yes, I do it 및 짓궂군요 다음과 같은 저기 모든 값을 x, 여기서 y 는 x 는 깎은 것으로 보여 결과가 아닌 라운드된 나타내줍니다?)

그렇다면: Int 는 더 나은 방법이 있을 수 없는 위험을 실행 연산뿐 라운드된 붙여넣습니다 절단?

뭔가 생각. 마스트로런드 (x) 가 아닌 한, 두 번. 업그레이드됨: () 등 여러 3.9999998 보았으매 반환되기를 마스트로런드 것은 불가능하다. 이에 따라 int (마스트로런드 ()) 은 배반자들의 잘라냅니다 아무 것도 할 것이며 항상 작동합니까.

질문에 대한 의견 (1)
해결책

&gt. 더블 캐스팅 있을 가능성도 있다고 계속 발생할 수 아래로 잘린 마스트로런드 () '을 통해 만든'

아니, '차 ()' 가 항상 올바른 가치, 그런 다음 라운드 너회의 더블 캐스팅 될 수 있는 모든 충족되었으며 '긴' 잘라냅니다 소수점. 하지만 그 나머지 모든 분수 부품 둥글리기 않습니다.

다음은 docs 에서 ['마스트로런드 (실수)'] [1]:

&gt. 가장 오래 되돌려줍니다 논증. 그 결과 라운드됩니다 정수 추가하기만 입력할 수 있으며, 그 결과, 캐스팅 바닥에 1/2 정도이다. 즉, 그 결과 값을 표현식에서는 같습니다.

&gt. (긴) 마테오프루어 (a + 0.5d)

[1]: http://download.oracle.com/javase/6/docs/api/java/lang/Math.html # 라운드 (실수)

해설 (3)

Int ',' 더블 '을 위한 데이터 형식' 다음 사용할 수 있습니다.

Double double = 5.00;

int integer = double.intValue();
해설 (2)
Double perValue = 96.57;
int roundVal= (int) Math.round(perValue);

내 것이 목적.

해설 (0)