私はこの非常に奇妙な問題で頭を掻き回しています。私はPHPでいくつかの計算を行い、最終結果は数値です。これは整数ですが、計算が行われるため、PHPはこれを浮動小数点数と見なします。しかし、整数として型キャストすると、魔法のように1を減算します。 1と同様に整数全体が下になります。私は本当に迷っています。自分で試してみてください。PHP浮動小数点数とintは異なる数字を返します
<?php
$number_of_rows = 10;
$number_of_columns = 19;
$active = array();
$tile = 160;
$column = $tile/$number_of_columns; // 8.42105263158
$rounded_down = floor($column); // 8
$column = $column-$rounded_down; // 0.42105263158
$column = $column*$number_of_columns; // 8
var_dump($column); // 8 -> that is great
var_dump((int)$column); // 7 -> WTF?!!!
?>
PHP 7.0.12 Linux 64ビットです。
'echo serialize($ column);' 'int'にキャストすると、丸められません。 – AbraCadaver
http://stackoverflow.com/questions/588004/is-floating-point-math-broken?rq=1 – AbraCadaver
'$ column'の実際の値はおそらく '7.999999999999234'のようなもので、' 8 'として出力されますデフォルトの印刷精度のためです。しかし、それを '(int)'にキャストすると、端数は削除されます。 – Barmar