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

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

WBOY
Freigeben: 2016-06-06 20:34:33
Original
1518 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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

<code>(0.5+0.2+0.3+0.0)==1  //var_dump  bool(true)
</code>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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

<code>(0.5+0.2+0.3+0.0)==1  //var_dump  bool(true)
</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

<code>php</code><code>var_dump(bcadd(0.1+0.001));
var_dump(0.1+0.001);
</code>
Nach dem Login kopieren

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

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

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

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage