私は2つの数値を比較する必要があります。それらが等しい場合でもif-statementがfalseを返す場合もあります。2つの数字「エコー」は同じですが!=は真ですか?
$next_accum = $curr_amount + $csv_arr[$i]['amount'];
var_dump($next_accum);
echo ' ';
var_dump($csv_arr[$i]['accum_amount']);
if($next_accum != $csv_arr[$i]['accum_amount']) echo ' _err';
echo '<br>';
私はそれを得ることはありません。..上記プリント:
int(892474) int(892474)
int(866374) int(866374)
int(741374) int(741374)
int(685124) int(685124)
int(570749) int(570749)
int(520749) int(520749)
int(510819) int(510818) _err
int(474062) int(474063) _err
int(461678) int(461678)
あなたは、整数にキャストし、それらを丸める(INTVAL使用)、またはそれらをCONCATすることができます文字列になる。浮動小数点は、メモリを表現する方法のために正確さに問題が発生する可能性があります。 – galchen
浮動小数点数学の不正確な世界へようこそ! – cdhowie
intに変換できない場合は、次のような精度をチェックすることができます:if(abs($ float1 - $ float2)> 0.001)echo 'error; –