PHP版本:PHP 7.1.8
$a=2.01;
$b=$a*100;
$c=(int)$b;
var_dump($c);
结果输出了(int)200
,不应该是(int)201
吗?
如果换一个数,又有不同的结果
$a=3.01;
$b=$a*100;
$c=(int)$b;
var_dump($c);
结果输出了(int)301
,通过试其它数,就2.01有问题,这是否是PHP的 BUG 呢?
而且有发现javascript
也有这个问题
PHP版本:PHP 7.1.8
$a=2.01;
$b=$a*100;
$c=(int)$b;
var_dump($c);
结果输出了(int)200
,不应该是(int)201
吗?
如果换一个数,又有不同的结果
$a=3.01;
$b=$a*100;
$c=(int)$b;
var_dump($c);
结果输出了(int)301
,通过试其它数,就2.01有问题,这是否是PHP的 BUG 呢?
而且有发现javascript
也有这个问题
不是PHP的bug,而是PHP中float为弱类型变量,比如你还可以试下0.58*100的结果也是57.999999
http://blog.100dos.com/2016/0...
$a=2.01;
$b=$a*100;
echo printf('%.20f', $b);//200.9999999999999715782924
$c=(int)$b;//200
$a=3.01;
$b=$a*100;
echo printf('%.20f', $b);//301.0000000000000000000024
$c=(int)$b;//301
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
http://blog.csdn.net/leedanin...
这篇文章有详细解说