Число с плавающей точкой и нулевое сравнение

У меня есть простая задача PHP, чтобы сложить все цифры числа.

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

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

$number /= 10;
}

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

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

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

0

Решение

Когда вы обновляете номер, вы действительно должны делать это

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]