ID: 27433
Updated by: [EMAIL PROTECTED]
Reported By: ghetalion at ghetalion dot com
-Status: Open
+Status: Bogus
Bug Type: Variables related
Operating System: Linux
PHP Version: 4.3.4
New Comment:
Floating point values have a limited precision. Hence a value might
not have the same string representation after any processing. That also
includes writing a floating point value in your script and directly
printing it without any mathematical operations.
Thank you for your interest in PHP.
No bug.
Previous Comments:
------------------------------------------------------------------------
[2004-02-28 21:49:53] [EMAIL PROTECTED]
If it's not clear already, if you remove the (int) cast, you get
float(3); if the cast is there, it's int(2). This may be some sort of
obscure floating point rounding error.
------------------------------------------------------------------------
[2004-02-28 21:43:11] ghetalion at ghetalion dot com
Set this into the function when declaring it:
TimeToText(1072224000);
And you will get the expected/actual result I defined.
------------------------------------------------------------------------
[2004-02-28 21:39:51] ghetalion at ghetalion dot com
Description:
------------
When attempting to take a float variable and typecasting it into an
int, I receive a magnificent error that is unexplainable.
Reproduce code:
---------------
function TimeToText($timestamp)
{
$day = strftime("%d", $timestamp);
$factor = $day/10;
$factor = (int)(($factor- ((int)($factor)))*10);
var_dump($factor);
}
Expected result:
----------------
int(3)
Actual result:
--------------
int(2)
Instead of truncating all decimal places, converting a float into an
int is changing the entire whole-number value!
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27433&edit=1