场景
与上游银行通对接提交过去的金额通常是int型以分为单位,此时我们需要将以元为单位的金额乘以100再提交过去,但在float转int时候,金额可能会变动造成误差
示例
$value = 39.80;
var_dump($value*100); //输出3980
var_dump(intval($value*100)); //输出3979
改进
先将乘以100的金额转str,再转int(这个方法虽然可行,但不可靠)
//比较原始的方式
$value = 39.80;
$str = (string)($value*100);
var_dump(intval($str)); //输出3980
使用php内置btmatch函数来处理
//更优的方法
$value = 39.80;
$res = bcmul($val,100,0);
var_dump(intval($res)); //输出3980