首页 / PHP / PHP金额计算高精度函数
PHP金额计算高精度函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP金额计算高精度函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1645字,纯文字阅读大概需要3分钟。
内容图文
![PHP金额计算高精度函数](/upload/InfoBanner/zyjiaocheng/621/61fed4124474482089cfffe668515668.jpg)
精度函数
PHP浮点数计算精度不够,以下是几个精度计算函数
bcadd — 将两个高精度数字相加
bccomp — 比较两个高精度数字,返回-1, 0, 1
bcdiv — 将两个高精度数字相除
bcmod — 求高精度数字余数
bcmul — 将两个高精度数字相乘
bcpow — 求高精度数字乘方
bcpowmod — 求高精度数字乘方求模,数论里非常常用
bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
bcsqrt — 求高精度数字平方根
bcsub — 将两个高精度数字相减
计算类
<?php
/**
* Created by PhpStorm.
* User: huxiansheng
* Date: 2018-12-18
* Time: 11:00
*/
/**
* PHP精确计算 主要用于货币的计算用
* @param $n1 第一个数
* @param $symbol 计算符号 + - * / %
* @param $n2 第二个数
* @param string $scale 精度 默认为小数点后两位
* @return string
*/
class Price{
public static function pricecalc($n1, $symbol, $n2, $scale = '2')
{
$res = "";
switch ($symbol) {
case "+"://加法
$res = bcadd($n1, $n2, $scale);
break;
case "-"://减法
$res = bcsub($n1, $n2, $scale);
break;
case "*"://乘法
$res = bcmul($n1, $n2, $scale);
break;
case "/"://除法
$res = bcdiv($n1, $n2, $scale);
break;
case "%"://求余、取模
$res = bcmod($n1, $n2, $scale);
break;
default:
$res = "";
break;
}
return $res;
}
/**
* 价格由元转分(用于微信支付单位转换)
* @param $price 金额
* @return int
*/
public static function priceyuantofen($price){
$price = intval(self::pricecalc(100, "*",$price));
return $price;
}
/**
* 价格由分转元
* @param $price 金额
* @return float
*/
public static function pricefentoyuan($price){
$price = self::pricecalc(self::priceformat($price),"/",100);
return $price;
}
/**
* 价格格式化
*
* @param int $price
* @return string $price_format
*/
public static function priceformat($price){
$price_format = number_format($price, 2, '.', '');
return $price_format;
}
}
内容总结
以上是互联网集市为您收集整理的PHP金额计算高精度函数全部内容,希望文章能够帮你解决PHP金额计算高精度函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。