다음 코드PHP는 정수 및 부동 비교 불일치
$amount1 = 7299;
$amount2 = 72.9875;
$amount2_in_cents = round($amount2, 2) * 100;
if ($amount1 != $amount2_in_cents) {
echo "Amount $amount1 != $amount2_in_cents\n";
var_dump($amount1);
var_dump($amount2_in_cents);
} else {
echo "Amounts matched";
}
이이 나는 수레와 INT는 다르다는 것을 깨닫게 이제 출력
Amount 7299 != 7299
int(7299)
float(7299)
하지만 난 것 반올림 부여 두 값이 일치 할 것으로 예상했습니다. 그리고 int로 캐스팅하여 해결했습니다.
내 질문에 왜이 비교가 작동하지 않을 것으로 예상 했습니까 (두 값 모두 일치)?
고전적인 부동 소수점 올림 문제로 인해. '7299'의 정확한 값을 보장하기 때문에 int로 형변환하여 해결했습니다. – BoltClock