@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. Что за фигня?
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 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. А потом жалуешься на ерунду вместо результата.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽