Задать вопрос
@kostarev_v
Программирую для себя

Почему приведение типа к целому числу меняет результат?

<?php
$price = 157.3;
$summa = 4719;
$cnt =  ($summa / $price);
echo $cnt;
?>

Этот код работает правильно и выдаёт ответ 30

<?php
$price = 157.3;
$summa = 4719;
$cnt =  (int)($summa / $price);
echo $cnt;
?>


А этот код выдаёт неправильный ответ 29. Что за фигня?
  • Вопрос задан
  • 257 просмотров
Подписаться 2 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
@Arik
int не округляет, а приводит к целом числу (тупо отрубает остаток), если нужно по уму округлять к целом числу, то это round()
Ответ написан
Комментировать
IceRD
@IceRD
https://www.php.net/manual/ru/language.types.float...

Никогда не приводите неизвестную дробь к integer, так как это иногда может дать неожиданные результаты.
echo (int) ( (0.1+0.7) * 10 ); // выводит 7!
Ответ написан
Комментировать
v3shin
@v3shin
Веб-шаман
Проблема с округлением. Попробуйте round().
Ответ написан
Комментировать
Radjah
@Radjah
Делишь int на float с неявным преобразованием и приводишь к int. А потом жалуешься на ерунду вместо результата.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы