이것을 할 수 있습니까?
double variable;
variable = 5;
/* the below should return true, since 5 is an int.
if variable were to equal 5.7, then it would return false. */
if(variable == int) {
//do stuff
}
나는 코드가 아마 그런 아무것도하지 않습니다 알고 있지만, 어떻게 않습니다 이 이동?
답변
if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) {
// integer type
}
double의 반올림 값이 double과 같은지 확인합니다.
변수는 int 또는 double 값을 가질 수 있고 Math.floor(variable)
항상 int 값을 가질 수 있으므로 변수가 같으면 Math.floor(variable)
int 값을 가져야합니다.
변수의 값이 무한 또는 음의 무한대 인 경우에도 작동하지 않으므로 조건에 ‘변수가 무한대가 아닌 한’을 추가하십시오.
답변
또는 모듈로 연산자를 사용할 수 있습니다.
(d % 1) == 0
답변
구아바 : DoubleMath.isMathematicalInteger
. (공개 : 내가 썼습니다.) 또는 구아바를 아직 수입하지 않은 경우 x == Math.rint(x)
가장 빠른 방법입니다. 또는 rint
보다 빠릅니다 .floor
ceil
답변
public static boolean isInt(double d)
{
return d == (int) d;
}
답변
이렇게 해봐
public static boolean isInteger(double number){
return Math.ceil(number) == Math.floor(number);
}
예를 들면 다음과 같습니다.
Math.ceil(12.9) = 13; Math.floor(12.9) = 12;
따라서 12.9 는 정수 가 아닙니다.
Math.ceil(12.0) = 12; Math.floor(12.0) =12;
따라서 12.0 은 정수입니다
답변
Integer
와에 대한 버전은 다음 과 Double
같습니다.
private static boolean isInteger(Double variable) {
if ( variable.equals(Math.floor(variable)) &&
!Double.isInfinite(variable) &&
!Double.isNaN(variable) &&
variable <= Integer.MAX_VALUE &&
variable >= Integer.MIN_VALUE) {
return true;
} else {
return false;
}
}
로 변환 Double
하려면 Integer
:
Integer intVariable = variable.intValue();
답변
치다:
Double.isFinite (value) && Double.compare (value, StrictMath.rint (value)) == 0
이것은 핵심 Java를 고수하고 부동 소수점 값 ( ==
) 간의 등가 비교를 피합니다 . 가 isFinite()
필요하다 rint()
통과한다 무한대 값.