2016-11-11 13 views
0

У меня есть простая задача PHP, чтобы суммировать цифры всех чисел.Число с плавающей точкой и нулевое сравнение

$number = 345; 
$digit = $number; 
$sum = 0; 

while ($number > 0) { 
    $digit = $number % 10; 
    $sum += $digit; 

    $number /= 10; 
} 

Это решение даст правильный результат. Тем не менее, я знаю, что он войдет в цикл больше, чем three times. И в итоге он станет равным нулю.

Почему это происходит? В какое время поплавки становятся равными нулю? Просто следуя математическим принципам, это будет бесконечный цикл, верно? И поскольку есть более 3, 4 и 5 цифр, как конечный результат не больше 12 (даже для этой небольшой суммы).

P.S. Я знаю, что я должен решить это, округляя значение $number, но я просто любопытно о плавающих и его поведении.

ответ

0

При обновлении номера вы действительно должны делать это

$number -= $digit; 
$number /= 10; 

поплавков являются конкретной платформы, проверить эту ссылку http://php.net/manual/en/language.types.float.php