總結(jié)PHP中數(shù)值計(jì)算的注意事項(xiàng)
一:四舍五入
1.round — 對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入
float round ( float $val [, int $precision ] )
2:floor — 舍去法取整(向下取整)
float floor ( float $value )
3.ceil — 進(jìn)一法取整(向上取整)
float ceil ( float $value )
坑點(diǎn): 當(dāng)數(shù)值為整數(shù)的時(shí)候 例如 11 那么floor(11) = 10 , ceil (11) = 12; 問(wèn)題顯而易見(jiàn),所以計(jì)算的時(shí)候要格外注意這一點(diǎn)
解決方法 : floor(11 + 0.01);
二:整數(shù)和小數(shù)相乘除
坑點(diǎn):3.5 * 100 = 300 ,就算你數(shù)學(xué)再好也沒(méi)用,在php世界里這就是真理,如果用php的+-*/計(jì)算浮點(diǎn)數(shù)的時(shí)候,可能會(huì)遇到一些計(jì)算結(jié)果錯(cuò)誤的問(wèn)題,比如echo intval( 0.58*100 );會(huì)打印57,而不是58,這個(gè)其實(shí)是計(jì)算機(jī)底層二進(jìn)制無(wú)法精確表示浮點(diǎn)數(shù)的一個(gè)bug,是跨語(yǔ)言的,我用python也遇到這個(gè)問(wèn)題。所以基本上大部分語(yǔ)言都提供了精準(zhǔn)計(jì)算的類庫(kù)或函數(shù)庫(kù),比如php有BC高精確度函數(shù)庫(kù)
解決方法:就是將整型變成浮點(diǎn)型 3.5 * (float)100 = 350
三:浮點(diǎn)數(shù)的怪異
坑點(diǎn):8.50 – 8 = 0.500000001 其實(shí)原因和2差不多
解決方法:將結(jié)果進(jìn)行round(),提高精度即可
總結(jié)
以上就是PHP數(shù)據(jù)計(jì)算的注意事項(xiàng)的全部?jī)?nèi)容,希望本文的內(nèi)容在大家在PHP中進(jìn)行數(shù)據(jù)計(jì)算的時(shí)候能有所幫助。
- PHP中浮點(diǎn)數(shù)計(jì)算比較及取整不準(zhǔn)確的解決方法
- php計(jì)算函數(shù)執(zhí)行時(shí)間的方法
- PHP幾個(gè)數(shù)學(xué)計(jì)算的內(nèi)部函數(shù)學(xué)習(xí)整理
- php計(jì)算兩個(gè)整數(shù)的最大公約數(shù)常用算法小結(jié)
- PHP計(jì)算加權(quán)平均數(shù)的方法
- php數(shù)字游戲 計(jì)算24算法
- php常用字符串String函數(shù)實(shí)例總結(jié)【轉(zhuǎn)換,替換,計(jì)算,截取,加密】
- PHP之浮點(diǎn)數(shù)計(jì)算比較以及取整數(shù)不準(zhǔn)確的解決辦法
- PHP數(shù)據(jù)分析引擎計(jì)算余弦相似度算法示例
- php數(shù)值計(jì)算num類簡(jiǎn)單操作示例
相關(guān)文章
php動(dòng)態(tài)生成版權(quán)所有信息的方法
這篇文章主要介紹了php動(dòng)態(tài)生成版權(quán)所有信息的方法,實(shí)例分析了php時(shí)間與字符串的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03php恢復(fù)數(shù)組的key為數(shù)字序列的方法
這篇文章主要介紹了php恢復(fù)數(shù)組的key為數(shù)字序列的方法,涉及php操作數(shù)組鍵名的技巧,需要的朋友可以參考下2015-04-04php使用explode()函數(shù)將字符串拆分成數(shù)組的方法
這篇文章主要介紹了php使用explode()函數(shù)將字符串拆分成數(shù)組的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02php識(shí)別翻轉(zhuǎn)iphone拍攝的顛倒圖片
這篇文章主要介紹了php識(shí)別翻轉(zhuǎn)iphone拍攝的顛倒圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05PHP用SAX解析XML的實(shí)現(xiàn)代碼與問(wèn)題分析
近日在做一個(gè)解析XML的小程序,因?yàn)榉?wù)器是PHP4的,XML解析函數(shù)只能用SAX方式的xml_parser來(lái)解析了。2011-08-08PHP5.2中date()函數(shù)顯示時(shí)間與北京時(shí)間相差8小時(shí)的解決辦法
北京時(shí)間是東8區(qū),可能是時(shí)區(qū)問(wèn)題.但是此前都沒(méi)問(wèn)題啊,經(jīng)過(guò)google發(fā)現(xiàn)原來(lái)從php5.1.0開(kāi)始,php.ini里加入了 date.timezone這個(gè)選項(xiàng),默認(rèn)情況下是關(guān)閉的2009-05-05