PHP에서 2 개의 값을 비교하려고합니다.PHP - 2 float 값을 비교할 때 이상한 결과가 있습니다.
내 논리는 : 나는 잔량 (a)는
- (B) 나는 (A - B)에 의해로 남아 계산해 충전 작업 후
- 나는 (C) 내가 (C)
두 PHP가 비슷하다고해도 그들은 동일하지 않습니다. 주어진 아래
은 (채워진 값) 내 코드
<?php
$remaining_amount_before_payment = "600";
$remaining_amount_after_payment = (float)$remaining_amount_before_payment - (float)"387.60";
$actual_remaining_amount_after_payment = "212.4";
echo "actual_remaining_amount_after_payment: {$actual_remaining_amount_after_payment} <br><br>";
echo "remaining_amount_after_payment: {$remaining_amount_after_payment} <br><br>";
var_dump(((float)$actual_remaining_amount_after_payment) == ((float)$remaining_amount_after_payment));?>
내가 float
에 값을 던져 입력이지만, var_dump
반환 FALSE
.
아무도 내가 이것이 왜 있는지 알아낼 수 있습니까?
PHP 5.6을 사용하고 있습니다.
미리 감사드립니다.
) 왜 처음에는 문자열로 숫자를 써야합니까? 절대적으로 그렇게 할 이유가 없습니다 **. b) 부동 소수점 연산은 정확하지 않다고 알고 있습니까? 당신은 [부동 소수점 가이드] (http://floating-point-gui.de/)를 알고 있고 읽었습니까? c) 그리고 자신이 말했듯이 : "둘 다 PHP가 비슷하다고해도 평등하지는 않습니다." - 당신은 "비슷한"과 "동등한"이 동일하지 않다는 것을 알고 있습니까? ;) –
실제 값은 API에서 가져온 것이므로 문자열로 나타납니다! 그래서 API 응답을 제어 할 수 없으므로 float에 캐스팅해야합니다. 나는 당신이 말한 요점에 대해서 몰랐습니다. 캐스트를 입력 할 때'float '을 사용하는 것이 좋지 않습니까? – masterFly