Ошибка с использованием (int) и (double) вместе, чтобы обрезать десятичные дроби

Когда я использую (int) с (double) несколько раз, это не работает правильно.
Посмотрите на пример кода PHP:

Мне нужно оставить 2 десятичных знака и удалить другие ...

Я знаю number_format (); функция, но я не могу ее использовать. Потому что это округление числа

number_format(24.299,2);
Выход: 24.30
Мне нужно: 24.29

<?php

$str="158.2";

echo (double)$str; // Output: 158.2
echo (double)$str*100; // Output: 15820
echo (int)((double)$str*100); // Output: 15819 <-WHY? It Must To Be 15820, Why 15819? 
echo ((int)((double)$str*100)/100); // Output: 158.19
?>

Мне нужно оставить два десятичных знака в числе и вырезать другие без округления.

Ответы на вопрос(5)

Ваш ответ на вопрос