|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-04-23 09:04 UTC] tony2001@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2026 The PHP GroupAll rights reserved. |
Last updated: Sun Jun 21 06:00:02 2026 UTC |
Description: ------------ Using settype() to alter FLOATs yields inconsistent values that will sometimes fail comparison operators. Reproduce code: --------------- <?php // THIS WILL WORK $fltOriginal = 3 * .5; $fltTransformed = $fltOriginal; settype($fltTransformed, 'string'); settype($fltTransformed, 'float'); var_dump($fltOriginal); var_dump($fltTransformed); if ($fltOriginal != $fltTransformed) print ('COMPARISON FAILED -- BUG'); print ("--------------------------\r\n"); // THIS WILL **NOT** WORK $fltOriginal = 3 * .6; $fltTransformed = $fltOriginal; settype($fltTransformed, 'string'); settype($fltTransformed, 'float'); var_dump($fltOriginal); var_dump($fltTransformed); if ($fltOriginal != $fltTransformed) print ('COMPARISON FAILED -- BUG'); ?> Expected result: ---------------- float(1.5) float(1.5) -------------------------- float(1.8) float(1.8) Actual result: -------------- float(1.5) float(1.5) -------------------------- float(1.8) float(1.8) COMPARISON FAILED -- BUG