저는이 아주 이상한 문제로 머리를 긁적 거리고 있습니다. PHP에서 계산을하고 최종 결과는 숫자입니다. 이것은 정수이지만 계산이 끝났기 때문에 PHP는 이것을 float로 간주합니다. 그러나 정수로 타입 변환하면 마술처럼 빼기가됩니다. 마찬가지로 1 전체 정수. 나는 정말로 상실감에 처해있다. 직접 시험해보십시오.PHP float 및 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