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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫游游²º¹²

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值