php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #14646 pow and floor misbehavior
Submitted: 2001-12-21 10:55 UTC Modified: 2001-12-21 11:37 UTC
From: reboot at gmx dot ch Assigned:
Status: Closed Package: Math related
PHP Version: 4.1.0 OS: Linux (Debian sid)
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: reboot at gmx dot ch
New email:
PHP Version: OS:

 

 [2001-12-21 10:55 UTC] reboot at gmx dot ch
Executing this code:

print((      floor(7)  ==       floor(7.1) ) . "<BR>");
print((pow(2,floor(7)) == pow(2,floor(7.1))) . "<BR>");

outputs

1<BR><BR>

So, if floor(7) is equal to floor(7.1) how can pow(2,x) from both numbers be different?

PHP 4.0.3pl1 gives the correct output 1<BR>1<BR>

Using the === to compare both non of the expressions is true, so i think floor and pow return int if the input is a integer, but the documentation says they always returns float. If i use 7.0 instead if 7 the output is correct and both expressions are equal.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-12-21 11:07 UTC] derick@php.net
Checking it out.
 [2001-12-21 11:08 UTC] sander@php.net
It works fine for me, on Debian Potato/PHP4.1.0/Apache1.3.22, and on Windows 2000 (with the same php/apache versions).
 [2001-12-21 11:15 UTC] derick@php.net
It's not bogus
 [2001-12-21 11:37 UTC] derick@php.net
Fixed in CVS. Floor() always returns a float now.

Derick
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jan 02 12:01:29 2025 UTC