У меня есть простая задача PHP, чтобы сложить все цифры числа.
$number = 345;
$digit = $number;
$sum = 0;
while ($number > 0) {
$digit = $number % 10;
$sum += $digit;
$number /= 10;
}
Это решение даст правильный результат. Тем не менее, я знаю, что он войдет в цикл больше, чем три раза. И в итоге он станет равным нулю.
Почему это происходит? В какое время поплавки становятся равными нулю? Просто следуя математическим принципам, это будет бесконечный цикл, верно? А поскольку в нем более 3, 4 и 5 цифр, конечный результат не превышает 12 (даже для этого небольшого количества).
Постскриптум Я знаю, что я должен решить это путем округления $number
значение для примера, но я просто любопытно о поплавках и их поведении.
Когда вы обновляете номер, вы действительно должны делать это
$number -= $digit;
$number /= 10;
Поплавки зависят от платформы, проверьте эту ссылку
http://php.net/manual/en/language.types.float.php
Других решений пока нет …