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