私は、私たちのアカウントの支払い金額が購入した商品に基づいている必要がある金額と同じであるかどうかを確認するいくつかのコードを持っています。PHP:奇妙な型キャスティングと丸め
$income = $this->getIncome();
$invoiceSum = $order->getInvoiceSum();
if($income != $invoiceSum) echo "Error";
値が同じであっても、私に「エラー」出力が得られます。ここでは
は、いくつかの「擬似コード」です。
$ incomeの値はRest API(JSON)の値です。ここで、$ invoiceSumは、すべての注文商品に税率を乗じた正味額に基づいて計算されます。
は私が行う場合:
echo $income . " " . gettype($income) . "<br>";
echo $invoiceSum . " " . gettype($invoiceSum) . "<br>";
は私が取得:
19.71 double
19.71 double
私が期待するものです。
私はint値(=€の代わりに= Cent)として計算しようとしました。そして今、奇妙な部分が開始されます:
echo intval($income * 100);
echo intval($invoiceSum * 100);
と私は得る:
1970
1971
フム?これを修正する方法は、私は正しい値を得る? hereから
を行う必要がありますmanual/en/language.types.float.php#language.types.float.comparison)のタイプです。 – axiac
btw、['intval()'](http://php.net/manual/en/function.intval.php)はラウンドしません。切り詰められます。また、浮動小数点数がどのように問題になるかについての知識の欠如が変わります。 – axiac
@bernhardhはエラー – shashi