은 Float가 특정 값보다 작은 지 확인하는 조건을 평가하는 동안 이상한 동작을 경험합니다.동일한 값에 대해 evaulating 연산자보다 작음
String s = "3700.7777";
System.out.println(Float.parseFloat(s));
if(Float.parseFloat(s) < 3700.7777){
System.out.println("Hi");
}
's'의 값이 조건의 값과 같더라도 코드는 여전히 "Hi"를 인쇄합니다. 작음 연산자를 사용하고 있으므로 3700.7777 이상의 값에 대해서는 조건이 실패하고 "안녕"이 인쇄되지 않습니다.
무엇이 여기에 있습니까? 어떤 도움이 필요합니까?
'3700.7777'은 '이중'입니다. 편집 : 당신이 극도로 조심하고 그들이 어떻게 작동하는지 정확히 알지 못한다면 부동 소수점 숫자가 같은지 테스트하지 않아야합니다. (당신은 그렇지 않습니다. 그렇지 않습니다. 그리고 대다수의 프로그래머는 그렇지 않습니다.) – immibis
"* 's'의 값이 조건 *"=>의 값과 같더라도? – assylias
check는'if (Float.parseFloat (s) == 3700.7777f)'조건에서 작동하고 있습니까? – Himanshu