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