[php-src] Issue #8169: ceil() misbehaviour
| From: | marcohello | 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