关于PHP的浮点运算取floor(3)得到结果2的奇怪问题

$amount = 300;
$num = 1.2;
$num = $num - 1.1;
 
$num = floatval($num);
var_dump($num);
 
$amount = ($num * $amount) / 10;
 
var_dump($amount);
 
var_dump(floor($amount));exit;




结果:



 0.1
 3
 2




结果超乎你想象,PHP的浮点运算,就是这么坑。。。。。。



过了两个小时,找到解决办法,如下:


$amount = 3000;
$num = 1.2;
$num -= 1;
 
// $amount = $num * $amount / 10;
$amount = bcmul($num, $amount) / 10;
 
echo $amount . "\n";
echo floor($amount);
exit;




关于bcmul,可以参考这里:


http://php.freehostingguru.com/function.php-bcmul.php


2017-02-27_58b3ef91ebb7b.png

雷亮博客
请先登陆后发表评论
  • 最新评论
  • 总共0条评论
  • 本站使用thinkphp搭建 © 2014-2016 www.leigougou.com 版权所有 ICP证:蜀ICP备16024789号-1
  • 联系邮箱:1031041088@qq.com