Home > Backend Development > PHP Tutorial > php进行加法计算时为什么0.5+0.2+0.2+0.1 不等于1

php进行加法计算时为什么0.5+0.2+0.2+0.1 不等于1

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-06 20:34:33
Original
1546 people have browsed it

<code>$sum=(0.5+0.2+0.2+0.1);//var_dump   float(1)
$sum2=1  //var_dump   int(1)

$sum == $sum2  //var_dump  bool(false)
</code>
Copy after login
Copy after login

请问是怎么回事情
另外下面的情况经测试是可以的
比如说

<code>(0.5+0.2+0.3+0.0)==1  //var_dump  bool(true)
</code>
Copy after login
Copy after login

回复内容:

<code>$sum=(0.5+0.2+0.2+0.1);//var_dump   float(1)
$sum2=1  //var_dump   int(1)

$sum == $sum2  //var_dump  bool(false)
</code>
Copy after login
Copy after login

请问是怎么回事情
另外下面的情况经测试是可以的
比如说

<code>(0.5+0.2+0.3+0.0)==1  //var_dump  bool(true)
</code>
Copy after login
Copy after login

在数字计算时,请使用BCMath(点我点我点我)

<code>php</code><code>var_dump(bcadd(0.1+0.001));
var_dump(0.1+0.001);
</code>
Copy after login

电脑里面 二进制 表示小数的方法 导致精度不够准确
所有的语言都是这样 小数的比较一般用
abs(expression)

一个是float点数,一个是整数,至于下面要深入理解php源码了

这是浮点数精度的问题,在所有语言中都存在,在PHP文档中有对这个问题做解释:链接地址

经典问题 要看下大神的解释
http://www.laruence.com/2013/03/26/2884.html

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
php data acquisition?
From 1970-01-01 08:00:00
0
0
0
PHP extension intl
From 1970-01-01 08:00:00
0
0
0
How to learn php well
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template