php 数字精度 微信退款精确计算

PHP的数字精度问题

其实这是一个老生长谈的问题,但很多同学不看手册 可能都没注意!

在向微信发送请求参数时,尤其是金额,需要把元转换为分,直接乘以100就可以,但是又使用了转化整数类型的函数:

int 或者 intval 结果都会少1

由于浮点类型的数字通过内部二进制转换得到结果,就是浮点类型的计算都会丢失精度的。
需要先使用strval() 函数将变量转成字符串类型

测试代码

$a = "310.40";
$b = $a*100;
$c = intval(strval($a*100)); //正确的处理方式
var_dump($b,$c);
setRefundFee($b);
setRefundFee($c);

function setRefundFee(int $refundFee): void
{
    var_dump('refundFee',$refundFee);
}
展开阅读全文
©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读