PHP下的浮點(diǎn)運(yùn)算不準(zhǔn)的解決方法
最近在做一個(gè)?的相加減問(wèn)題是,出現(xiàn)了浮點(diǎn)運(yùn)算不準(zhǔn)的情況,看來(lái)都說(shuō)解釋型語(yǔ)言對(duì)于浮點(diǎn)運(yùn)算都會(huì)有問(wèn)題的說(shuō)法是真的。
首先看一段代碼:
<?php $a = 0.1; $b = 0.7; var_dump(($a + $b) == 0.8);
打印出來(lái)的值居然為 boolean false
這是為啥?PHP手冊(cè)對(duì)于浮點(diǎn)數(shù)有以下警告信息:
Warning
浮點(diǎn)數(shù)精度
顯然簡(jiǎn)單的十進(jìn)制分?jǐn)?shù)如同 0.1 或 0.7 不能在不丟失一點(diǎn)點(diǎn)精度的情況下轉(zhuǎn)換為內(nèi)部二進(jìn)制的格式。這就會(huì)造成混亂的結(jié)果:例如,floor((0.1+0.7)*10) 通常會(huì)返回 7 而不是預(yù)期中的 8,因?yàn)樵摻Y(jié)果內(nèi)部的表示其實(shí)是類(lèi)似 7.9999999999...。
這和一個(gè)事實(shí)有關(guān),那就是不可能精確的用有限位數(shù)表達(dá)某些十進(jìn)制分?jǐn)?shù)。例如,十進(jìn)制的 1/3 變成了 0.3333333. . .。
所以永遠(yuǎn)不要相信浮點(diǎn)數(shù)結(jié)果精確到了最后一位,也永遠(yuǎn)不要比較兩個(gè)浮點(diǎn)數(shù)是否相等。如果確實(shí)需要更高的精度,應(yīng)該使用任意精度數(shù)學(xué)函數(shù)或者 gmp 函數(shù)
那么上面的算式我們應(yīng)該改寫(xiě)為<?php$a = 0.1;$b = 0.7;var_dump(bcadd($a,$b,2) == 0.8);這樣就能解決浮點(diǎn)數(shù)的計(jì)算問(wèn)題了
以上就是小編為大家?guī)?lái)的PHP下的浮點(diǎn)運(yùn)算不準(zhǔn)的解決方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~
- PHP中set_include_path()函數(shù)相關(guān)用法分析
- php中的路徑問(wèn)題與set_include_path使用介紹
- php mysql like 實(shí)現(xiàn)多關(guān)鍵詞搜索的方法
- php通過(guò)PHPExcel導(dǎo)入Excel表格到MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單實(shí)例
- 遍歷指定目錄,并存儲(chǔ)目錄內(nèi)所有文件屬性信息的php代碼
- PHP圖像識(shí)別技術(shù)原理與實(shí)現(xiàn)
- PHP讀取大文件的幾種方法介紹
- php set_include_path函數(shù)設(shè)置 include_path 配置選項(xiàng)
相關(guān)文章
php讀取EXCEL文件 php excelreader讀取excel文件
php開(kāi)發(fā)中肯定會(huì)遇到將excel文件內(nèi)容導(dǎo)入到數(shù)據(jù)庫(kù)的需要,php-excel-reader可以很輕松的使用它讀取excel文件,本文將詳細(xì)介紹,需要了解的朋友可以參考下2012-12-12
Thinkphp5框架簡(jiǎn)單實(shí)現(xiàn)鉤子(Hook)行為的方法示例
這篇文章主要介紹了Thinkphp5框架簡(jiǎn)單實(shí)現(xiàn)鉤子(Hook)行為的方法,結(jié)合實(shí)例形式詳細(xì)分析了Thinkphp5框架實(shí)現(xiàn)鉤子(Hook)行為的步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
PHP將XML轉(zhuǎn)數(shù)組過(guò)程詳解
本文講的是用PHP將XML對(duì)象轉(zhuǎn)換成數(shù)組的方法2013-11-11
php實(shí)現(xiàn)文件管理與基礎(chǔ)功能操作
這篇文章通過(guò)實(shí)例代碼給大家講解了php文件管理與基礎(chǔ)功能的實(shí)現(xiàn),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-03-03
Thinkphp實(shí)現(xiàn)MySQL讀寫(xiě)分離操作示例
這篇文章主要介紹了Thinkphp實(shí)現(xiàn)MySQL讀寫(xiě)分離的方法,需要的朋友可以參考下2014-06-06
iis 7下安裝laravel 5.4環(huán)境的方法教程
最近想嘗試體驗(yàn)下laravel框架,所以自己嘗試在iis 7下安裝laravel 5.4環(huán)境,雖然遇到些問(wèn)題,但最終都解決了,所以下面這篇文章主要給大家介紹了在iis 7下安裝laravel 5.4環(huán)境的方法教程,需要的朋友可以參考下。2017-06-06

