[php-src] Issue #8169: ceil() misbehaviour

From: Date: Fri, 04 Mar 2022 09:56:38 +0000
Subject: [php-src] Issue #8169: ceil() misbehaviour
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-240186@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/8169 Author: marcohello ### Description The following code: ``` $numero = (double)15230; $numero2 = (double)152.30*100; $numero3 = (double)15240; $numero4 = (double)152.40*100; echo "[".gettype($numero)."] ceil(".$numero.") = ".ceil($numero); //[double] ceil(15230) = 15230 echo "<br>"; echo "[".gettype($numero2)."] ceil(".$numero2.") = ".ceil($numero2); //[double] ceil(15230) = 15231 <--- WHY? echo "<br>"; echo "[".gettype($numero3)."] ceil(".$numero3.") = ".ceil($numero3); //[double] ceil(15240) = 15240 echo "<br>"; echo "[".gettype($numero4)."] ceil(".$numero4.") = ".ceil($numero4); //[double] ceil(15240) = 15240 echo "<br>"; $numero = round((double)15230); $numero2 = round((double)152.30*100); $numero3 = round((double)15240); $numero4 = round((double)152.40*100); echo "[".gettype($numero)."] ceil(".$numero.") = ".ceil($numero); //[double] ceil(15230) = 15230 echo "<br>"; echo "[".gettype($numero2)."] ceil(".$numero2.") = ".ceil($numero2); //[double] ceil(15230) = 15230 echo "<br>"; echo "[".gettype($numero3)."] ceil(".$numero3.") = ".ceil($numero3); //[double] ceil(15240) = 15240 echo "<br>"; echo "[".gettype($numero4)."] ceil(".$numero4.") = ".ceil($numero4); //[double] ceil(15240) = 15240 ``` Resulted in this output: ``` [double] ceil(15230) = 15230 [double] ceil(15230) = 15231 [double] ceil(15240) = 15240 [double] ceil(15240) = 15240 [double] ceil(15230) = 15230 [double] ceil(15230) = 15230 [double] ceil(15240) = 15240 [double] ceil(15240) = 15240 ``` But I expected this output instead: ``` [double] ceil(15230) = 15230 [double] ceil(15230) = 15230 [double] ceil(15240) = 15240 [double] ceil(15240) = 15240 [double] ceil(15230) = 15230 [double] ceil(15230) = 15230 [double] ceil(15240) = 15240 [double] ceil(15240) = 15240 ``` It seems to be appearing only with .30 as decimal value. Casting or not casting does not change. The PHP version used iss 7.4 ### PHP Version 7,4 ### Operating System macOS

« previous php.bugs (#240186) next »