php integer conversion error?
Aug 04, 2016 am 09:20 AM
$a = 16.4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
Can anyone give me some advice?
Reply content:
$a = 16.4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
Can anyone give me some advice?
Similar questions from SF
Brother Bird’s explanation of PHP int and float
16.4 is 16.399999 inside the machine......
16.399999*100 = 16.399999. intval directly removes the mantissa
echo " ";
Shocked me
$a = 16.4 *100; echo $a.PHP_EOL; echo intval($a).PHP_EOL;//用PHP_EOL不是挺好
Actually, I think this is a bug in PHP, but it will be over with a little attention.
PHP’s integer processing includes rounding, rounding down, and rounding up. As @lettermu has explained before, there is no 16.4 in binary and can only be approximated, so 16.4*100 is not 1640, but 1639.9999999999999999999999. I don’t know what the specific processing is done internally, but through a simple test, it can be found that PHP rounds down instead of rounding when converting to integer.
<code>$a = 16.4 * 100; //其实很多小数都有类似问题,也不限于PHP echo (string) $a . "\n"; echo (int) $a . "\n"; echo floor($a) . "\n"; echo ceil($a) . "\n"; echo (int)(string) $a . "\n";</code>
Intval function problem. You can convert strval first and then convert it to int
<code>echo intval(strval(16.4 *100)); // 1640</code>
That’s right. Your way of wrapping lines makes my eyes light up. It feels like opening the door to a new world 23333

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

How To Set Up Visual Studio Code (VS Code) for PHP Development
