2016-12-12 15 views
1
$package_with_fee = $packages_lot_qty * 1.1; 

$total_sum = floatval($total_sum); 
$package_with_fee = floatval($package_with_fee); 


echo "Total sum is $total_sum vs Package with fee cost $package_with_fee"; 
if($total_sum != $package_with_fee) 
{ 

echo "ERROR"; 

} 

私は、コードを実行すると、これは私がPHPは2と同じ数を比較するが、文は

Total sum is 3300 vs Package with fee cost 3300ERROR 

私はわからない、なぜその間違って得るもの、両方のPHP変数は3300ですが、そのわずかさを働いていない場合一致していないとエラーをスローします。何がうまくいかなかったでしょうか?

+1

このページを見ると、問題点を理解できます:http://floating-point-gui.de/ – Jite

+0

'echo sprintf("%。20f "、 $変数); '両方の変数名のために、そして次に読んでください:http://stackoverflow.com/q/588004 – Rizier123

+0

浮動小数点数は非常に近似しています。浮動小数点数を表現している間にコンピュータが非常に正確であることは非常に複雑で、 – Alexandre

答えて

-2

両方の変数に対してvar_dumpを実行して違いを確認します。形式やその他の小さな違いがあります。浮動小数点数についても調べることができますhttp://php.net/manual/en/function.floatval.php

+0

2つの変数でvar_dumpを実行しても目に見える違いはありません –

+0

こんにちは、これはhttp://php.net/manual/en/language.types.float.phpで説明されている浮動小数点精度の問題です。比較したい場合は、値を整数に変換してからfloatに変換するか、上のリンクで説明した別の方法を参照してください。 –

関連する問題