久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

php 浮點數(shù)比較方法詳解

本篇文章主要介紹了php浮點數(shù)比較方法,具有很好的參考價值。下面跟著小編一起來看下吧

浮點數(shù)運算精度問題

首先看一個例子:

<?php
$a = 0.1;
$b = 0.9;
$c = 1;
var_dump(($a+$b)==$c);
var_dump(($c-$b)==$a);
?>

$a+$b==$c 返回true,正確
$c-$b==$a 返回false,錯誤

為什么會這樣呢?

運算后,精度為20位時實際返回的內(nèi)容如下:

<?php
$a = 0.1;
$b = 0.9;
$c = 1;
printf("%.20f", $a+$b); // 1.00000000000000000000
printf("%.20f", $c-$b); // 0.09999999999999997780
?>

$c-$b 為 0.09999999999999997780,因此與0.1比較返回false

出現(xiàn)這個問題是因為浮點數(shù)計算涉及精度,當(dāng)浮點數(shù)轉(zhuǎn)為二進制時有可能會造成精度丟失。

浮點數(shù)轉(zhuǎn)二進制方法

整數(shù)部分采用除以2取余方法

小數(shù)部分采用乘以2取整方法

例如:把數(shù)字8.5轉(zhuǎn)為二進制

整數(shù)部分是8

8/2=4 8%2=0
4/2=2 4%2=0
2/2=1 2%2=0

1比2小,因此不需要計算下去,整數(shù)8的二進制為 1000

小數(shù)部分是0.5

0.5x2 = 1.0

因取整后小數(shù)部分為0,因此不需要再計算下去

小數(shù)0.5的二進制為 0.1

8.5的二進制為1000.1

計算數(shù)字0.9的二進制

0.9x2=1.8
0.8x2=1.6
0.6x2=1.2
0.2x2=0.4
0.4x2=0.8
0.8x2=1.6

…. 之后不斷循環(huán)下去,當(dāng)截取精度為N時,N后的數(shù)會被舍去,導(dǎo)致精度丟失。

上例中0.9在轉(zhuǎn)為二進制時精度丟失,導(dǎo)致比較時出現(xiàn)錯誤。

所以永遠不要相信浮點數(shù)已精確到最后一位,也永遠不要比較兩個浮點數(shù)是否相等。

正確比較浮點數(shù)的方法

1.使用round方法處理后再比較

例子:

<?php
$a = 0.1;
$b = 0.9;
$c = 1;
var_dump(($c-$b)==$a);          // false
var_dump(round(($c-$b),1)==round($a,1)); // true
?>

2.使用高精度運算方法

首先進行運算時,使用高精度的運算方法,這樣可以保證精度不丟失。

高精度運算的方法如下:

bcadd 將兩個高精度數(shù)字相加

bccomp 比較兩個高精度數(shù)字,返回-1,0,1

bcdiv 將兩個高精度數(shù)字相除

bcmod 求高精度數(shù)字余數(shù)

bcmul 將兩個高精度數(shù)字相乘

bcpow 求高精度數(shù)字乘方

bcpowmod 求高精度數(shù)字乘方求模

bcscale 配置默認小數(shù)點位數(shù),相當(dāng)于Linux bc中的”scale=”

bcsqrt 求高精度數(shù)字平方根

bcsub 將兩個高精度數(shù)字相減

例子:

<?php
$a = 0.1;
$b = 0.9;
$c = 1;
var_dump(($c-$b)==$a);     // false
var_dump(bcsub($c, $b, 1)==$a); // true
?>

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持!

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)針對有序表插值查找的相關(guān)操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務(wù)端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結(jié)合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進行排序相關(guān)操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結(jié)合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發(fā)接口使用RSA進行加密解密方法,對此有興趣的朋友可以學(xué)習(xí)下。
主站蜘蛛池模板: 午夜精品久久久 | 影音先锋中文字幕在线观看 | 日韩在线欧美 | 亚洲视频一区在线播放 | 97伦理电影网| 久操av在线 | 欧美日韩亚洲一区 | 一区二区三区免费 | 亚洲精品视频免费观看 | 欧美人人 | 成人做爰www免费看视频网站 | 国产精品视频播放 | 国产 日韩 欧美 中文 在线播放 | 国产综合精品一区二区三区 | 亚洲精品在线视频 | 我想看国产一级毛片 | 久久er99热精品一区二区 | 色久在线 | 亚洲综合伊人 | 欧美久久久 | 国产精品久久久久影院色老大 | 日韩不卡在线观看 | 伊人狠狠 | 男人阁久久 | 日本在线免费观看 | 欧美日韩在线综合 | 在线视频亚洲 | 四虎永久免费影院 | 日韩精品一区二区三区在线观看 | 精品福利在线 | 男女视频在线观看免费 | 91网在线播放 | 日韩在线视频免费观看 | 伊人色综合久久久天天蜜桃 | 区一区二在线观看 | 午夜在线免费观看视频 | 午夜爱爱网 | 少妇精品久久久久久久久久 | 中文字幕一区二区视频 | 成人午夜免费福利视频 | 亚洲激情一级片 |