PHPで2つの値を比較しようとしています。PHP - 2つの浮動小数点値を比較すると奇妙な結果
私のロジックがある:私は残りの量(a)が
- (b)のIは、( - 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'にキャストするのです! あなたが言ったポイント(b)について私は知らなかった。キャストに 'float'を使うのは良いことではありませんか? – masterFly