note 107924 deleted from function.is-float by danbrown

From: Date: Thu, 10 May 2012 18:08:42 +0000
Subject: note 107924 deleted from function.is-float by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-187723@lists.php.net to get a copy of this message
Note Submitter: wschalle {A}{T} gmail {D}{O}{T} com ---- Alas, the final version listed below by ircadhikari still has some flaws. Here is a fixed version with test output. Not sure how it would do with unicode, but I'm beyond caring at this point. YMMV. <?php //New function -- works function isFloat($val){ if(is_string($val)) $val = trim($val); if( is_numeric($val) && ( is_float($val) || ( (float) $val > (int) $val || strlen($val) != strlen( (int) $val) ) && (ceil($val)) != 0 )) return true; else return false; } //Old function -- breaks in some cases function isTrueFloat($val){ if( is_float($val) || ( (float) $val > (int) $val || strlen($val) != strlen( (int) $val) ) && (ceil($val)) != 0 ) return true; else return false; } ?> <?php //tests function tf($val) { echo $val . "\t"; echo (isFloat($val))?'true':'false'; echo "\t"; echo (isTrueFloat($val))?'true':'false'; echo "\t"; echo (is_numeric($val))?'true':'false'; echo "\t"; echo (is_string($val))?'true':'false'; echo "\n"; } echo "value\ttfloat\toldfunc\tnumeric\tstring\n"; //And here's the tests with the test output appended // value tfloat oldfunc numeric string tf("2.4"); // 2.4 true true true true tf("2"); // 2 false false true true tf('4.0'); // 4.0 true true true true tf('2.1'); // 2.1 true true true true tf(0); // 0 false false true false tf("0"); // 0 false false true true tf(3.); // 3 true true true false tf(13); // 13 false false true false tf("12"); // 12 false false true true tf(3.53); // 3.53 true true true false tf("0.27"); // 0.27 true true true true tf(0.24); // 0.24 true true true false tf('-24.1'); // -24.1 true true true true tf(-24.121); // -24.121 true true true false //While the tests below are not strictly numbers, they should not evaluate as floats. tf("1num"); // 1num false true false true tf("num1"); // num1 false false false true tf(" 1"); // 1 false true true true tf("1 "); // 1 false true false true tf("num1.4"); // num1.4 false false false true tf("num 1.4");// num 1.4 false false false true tf("1.4num"); // 1.4num false true false true tf("num1.4"); // num1.4 false false false true

« previous php.notes (#187723) next »