php 關於金額的幾種計算方式


php 關於金額的幾種計算方式

       平常開始開發過程中,多多少少都會遇到點關於金額的計算,比如設置返利、提現手續費、折扣啊等等諸如此類的比例,然后再計算出之后的實際的費用。

下面,以折扣為例,來實現這類計算是如何實現的,話不多說,直接上代碼!

 1 //計算折扣
 2 $value = '9.95';//折扣  3 $money = '39.555';//原始價格,當然到這一步的價格,一般都是小數點后兩位的,此處保留三位,主要是為了對比  4 echo '原始價格:'. $money * ($value/10);  5 echo '<pre>';  6 echo '直接四舍五入:'.round($money * ($value / 10),2);  7 echo '<pre>';  8 echo '截取小數點后1位:'.floor($money * $value)/10;  9 echo '<pre>'; 10 echo '截取小數點后2位'.floor($money * ($value / 10) * 100)/100; 11 die;

 運行結果為:

1 價格:39.357225
2 直接四舍五入:39.36
3 截取小數點后1位:39.3
4 截取小數點后2位39.35

我一般是使用第二種和第四種,當然也可以根據自身需要,適當調整

 

最后是函數說明:

round():對浮點數進行四舍五入。語法:round(a,b), 默認b為0

floor():  向下舍入為最接近的整數。即小於這個浮點數的最大整數

 補充:在php運算過程中,精度運算是不可缺少的,所以是使用floor函數向下取整的時候,往往會出現bug,比如floor(0.58*10)為57,

此時可以借助php的高精度函數來解決,floor(bcmul(0.58,10))為58,,此外還有bccomp、bcadd、bcsub、bcmod、bcp、bcmul,分別代表比較、加、減、取模、除、乘法運算,具體可參考另一篇文章php 高精度計算函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM