Всем добрый день.
Версия PHP 5.6.37
Есть такой код
$n = ceil(99 * ((10 / 100) * (10 / 100)));
в ходе расчетов получаем просто 1
но ceil округляет его до 2
я понимаю что тип полученный в ходе расчетов double и возможно с этим связан данный баг, но к примеру такой вот код
$n = ceil((double)1.00);
или такой
$n = ceil(100 * 0.01);
работает как надо и возвращает 1.
Если ли какие ни будь идеи почему это происходит? И можно ли как то это пофиксить?
Попробуй выполнить код
$n = 100 * ((10 / 100) * (10 / 100));
printf("%.18f\n",$n);
И посмотрите результат.
У Вас число с плавающей запятой, а такие числа не могут точно представлять все рациональные числа. Поэтому результат целочисленного преобразования всегда имеет неопределенность в отношении одной единицы.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости