[英]PHP - Strange result when compare 2 float values
我正在嘗試比較PHP中的2個值。
我的邏輯是:
即使兩者相似,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) );?>
我鍵入將值var_dump
為float
,但是var_dump
返回FALSE
。
有人可以幫我找出原因嗎?
我正在使用PHP 5.6。
提前致謝!
使用var_dump(abs(floatval($ actual_remaining_amount_after_payment)== floatval($ remaining_amount_after_payment))== 0);
答對了!
經過幾次嘗試,我抓住了陷阱。 我快瘋了。
“問題”位於正確的舍入值內
$remaining_amount_before_payment = floatval("600"); // use floatval istead of (float)
$remaining_amount_after_payment = round($remaining_amount_before_payment - floatval("387.60"), 2);// use floatval istead of (float) and round result
$actual_remaining_amount_after_payment = floatval("212.4");// use floatval
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( $actual_remaining_amount_after_payment === $remaining_amount_after_payment ); // return TRUE
瞧!
acual您的變量“ $ remaining_amount_after_payment”不是真正的212.4
使用var_export來確定其值。 就我而言,您應該將浮點值“四舍五入”到精度。 四舍五入(x,精度)進行比較
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.