답변:
동일한 Javadoc에 따르면 :
인수가 NaN무한대이거나 양수 0 또는 음수 0이면 결과는 인수와 동일합니다. 와 그렇게 할 수 없습니다 int.
가장 큰 double값도 가장 큰 값보다 크므 int로 long.
정확성을위한 것입니다. double 데이터 유형에는 53 비트 가수가 있습니다. 무엇보다도 double은 정밀도 손실없이 2 ^ 53까지 전체를 나타낼 수 있습니다.
이렇게 큰 숫자를 정수에 저장하면 오버플로가 발생합니다. 정수에는 32 비트 만 있습니다.
정수를 double로 반환하는 것은 정수가 할 수있는 것보다 훨씬 더 유용한 숫자 범위를 제공하기 때문에 여기서해야 할 올바른 일입니다.
다른 사람들이 그 이유를 말해 주었는데,이 작업을하고 싶다면 올바르게 반올림하는 방법을 알려 드리겠습니다. 양수 만 사용하려는 경우 다음 문을 사용할 수 있습니다.
int a=(int) 1.5;
그러나 (int)는 항상 0으로 반올림합니다. 따라서 음수를 사용하려는 경우 :
int a=(int) -1.5; //Equal to -1
제 경우에는 이것을하고 싶지 않았습니다. 다음 코드를 사용하여 반올림을 수행했으며 모든 가장자리 케이스를 잘 처리하는 것 같습니다.
private static long floor(double a)
{
return (int) Math.floor(a);
}
(int) Math.floor(a)않습니까? 아마도 더 효율적이고 더 짧습니다.
(int) Math.floor(a)간단히 쓸 수 있습니다 (int) a.