2016-08-19 2 views
1

이중 변수 (employeeSalary)가 있고이 값이 제로()보다 큰지 확인하고 싶습니다. 이 코드를 작성하는 매우 순진한 방법을 생각할 수 있지만 double 데이터 형식의 경우이 올바른 쓰기 방법이 있는지 잘 모르겠습니다.이중 값이 0보다 큰지 확인하는 간단한 방법

if(employeeSalary > 0){ 
    // Employee salary is greater than zero. 
}else{ 
    // Employee salary is less than or equal to zero. 
} 

누구든지이 접근 방식이 작동하는지 알려 줄 수 있습니까?

+4

당신이 그것을 시도 해 봤나 :

또한 같은

// assuming employeeSalary is a double if(Double.compare(employeeSalary, Double.valueOf(0.0)) > 0){ // Employee salary is greater than zero. }else{ // Employee salary is less than or equal to zero. } 

참조 할 몇 번 정적 인 방법을 사용할 수 있을까? 작동 했나요? – OldCurmudgeon

+2

확실히 작동합니다. – Qianyue

+0

이 방법이 효과적 일 것입니다 만, 만약 당신이 정말로 자세한 자바를 사용하고자한다면'Double.compare (employeeSalary, 0.0)> 0' 정적 메소드를 사용할 수도 있습니다. 혹시 걱정 되시면'employeeSalary> 0.0'을 사용하십시오. 그'0! = 0.0' – EdgeCaseBerg

답변

1

double 값을 비교할 때 위험 지역이 있지만 > 또는 <을 사용하면 문제가되지 않습니다. 코드가 완벽하게 작동해야합니다.

0 것 같다 숫자가 아닌 (예를 들어 -0.0)와 숫자 효과적으로 제로 (예 0.0000...001를)하지만 == 0과 비교하는 것은 실패 할 곳 많은 가장자리 경우가 있기 때문에 당신은, 그러나, ==를 사용하여 조심해야 . 그냥 프리미티브를 비교하고자하는 경우

2

, 당신은 확실히 같은 작업을 수행 할 수 있습니다

if(employeeSalary > 0.0){ 
    // Employee salary is greater than zero. 
}else{ 
    // Employee salary is less than or equal to zero. 
} 

employeeSalary 그때 당신이 정말로 다른 두 번이 비교보다는한다 (원시) 더블 경우, 그 int. https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#compare(double,%20double)

+0

'employeeSalary> 0.0'이'employeeSalary> 0'보다 나은 이유는 무엇입니까? 그리고 왜 당신은'Double.compare (employeeSalary, Double.valueOf (0.0))> 0'을 제안합니까? 이 메소드는'Double.compare'가'>'과 약간 다른 의미를 가지고 있기 때문에 유용하다고 생각한다면 설명해야합니다. 그렇지 않으면 추천하지 않습니다. 'Double.valueOf (0.0)'를 통해 두 번째 인수를 복싱 (boxing)하면 바로 뒤에서 자동 언 박싱 할 수 있습니다. 전혀 이해가되지 않습니다. – Holger

관련 문제