Błąd przy użyciu (int) i (podwójnie) razem, aby odciąć dziesiętne

Kiedy używam (int) z (double) czasami nie działa poprawnie.
Przykład kodu PHP:

Muszę opuścić 2 dziesiętne i usunąć inne ...

Wiem, że numer_formatu (); funkcja Ale nie mogę jej użyć. Ponieważ jest liczba zaokrąglająca

number_format(24.299,2);
Wyjście: 24,30
Potrzebuję: 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
?>

Muszę zostawić dwa miejsca dziesiętne w liczbie i wyciąć inne BEZ BEZ zaokrąglenia.

questionAnswers(5)

yourAnswerToTheQuestion