頭のスクラッチャーが少しありました。 CSVの値をロードして浮動小数点数にキャストし、単純な算術演算を行い、結果を4番目の値と比較し、結果が一致しない場合はエラーを記録します。PHPでの比較の問題
$CsvArrayLine[2] = (float) $CsvArrayLine[2];
$CsvArrayLine[3] = (float) $CsvArrayLine[3];
$CsvArrayLine[4] = (float) $CsvArrayLine[4];
$GwTempTotal = $CsvArrayLine[2] + $CsvArrayLine[3];
$GwTempTotal = $GwTempTotal * $CsvArrayLine[4];
$GwTempGiven = (float) $CsvArrayLine[5];
if ($GwTempTotal != $GwTempGiven){
var_dump($GwTempTotal);
echo "</br>";
var_dump($GwTempGiven);
echo "</br>";
$GwErrorArray[] = array("03","$CsvArrayLine[0]"," $GwTempTotal each cost + pack each cost x pack does not = gross, this is BAD</br>");
}
これはどれもいいですし、29行のうち24行ではうまく動作します。ただし、値が同一であっても、5行はエラーとなります。 var_dumpsからの出力はすべてfloatであり、すべて同じであるということです。
誰かが見ることができない明らかなものはありますか?
ため
おかげで、 ' "[0] $ CsvArrayLine"'のようなものをやって避けるようにしてください。 – tadman
これは浮動小数点エラーの問題ですか?浮動小数点数を比較すると、浮動小数点数を出力するのとは異なる結果になる傾向がありますか? – IncredibleHat
あなたは本当に通貨価値のために浮動小数点を使うべきではありません。丸めエラーと比較エラーが発生します。 https://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currencyおよびhttps://stackoverflow.com/questions/316727/is-a-double-も参照してください。例えば、お金のために本当に不適切なものです。 – Simba