最进在对接国外国家支付的时候,验证签名是发现PHP隐式类型转换的坑,感觉还挺有意思,特分享出来,估计这种情况应该很少有人遇到吧

问题

PHP 在浮点型转换为字符串类型是,如果浮点数据为 0.0 1.0 x.00 的时候,在转换成字符串时会丢失小数点后面的 0 PS:隐式的类型转换也同样如此,所以就引申出了一个问题,当你在不知道浮点数据小数点后有几位数[末尾带0的],你就没法转换成 末尾带有正确个数的 0 的字符串, 是不是很有意思,手动🐶,哈哈

1
2
3
4
5
<?php
$a = 0.0;
echo (string)$a; // 0
$b = 1.0;
echo (string)$b; // 1

解决

我这边的解决方案就是确认了小数点后固定的位数,其他方案暂时没找到,有知道的大佬可以分享下。