我期望所有下面的比較是bool(true),但它們不是。 任何人都可以解釋這一點嗎?PHP:浮點數學運算和比較
test.php的
<?php
$f = 12;
$f += 5.95;
$f += 5.95;
$f += 5.95;
echo 'var_dump($f) = ';
var_dump($f);
echo 'var_dump($f == \'29.85\') = ';
var_dump($f == '29.85');
echo 'var_dump($f == 29.85) = ';
var_dump($f == 29.85);
echo 'var_dump($f == (float)\'29.85\') = ';
var_dump($f == (float)'29.85');
echo 'var_dump($f == \'29.85\') = ';
var_dump((string)$f == '29.85');
echo 'var_dump(round($f, 2) == \'29.85\') = ';
var_dump(round($f, 2) == '29.85');
$ PHP test.php的
var_dump($f) = float(29.85)
var_dump($f == '29.85') = bool(false)
var_dump($f == 29.85) = bool(false)
var_dump($f == (float)'29.85') = bool(false)
var_dump($f == '29.85') = bool(true)
var_dump(round($f, 2) == '29.85') = bool(true)
$ PHP -v
PHP 5.2.14 (cli) (built: Jul 23 2010 15:23:00)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
的可能重複: http://stackoverflow.com/questions/3148937/compare-floats-in-php – DhruvPathak