php 金额由元转成分
由于php浮点型的问题,金额元转分的时候,如果直接*100的话,会造成精度问题
$price = intval(19.9 * 100); // 输出结果为1989
所以我们就不能直接进行转化,可以使用php的高精度计算函数bc
$price = intval(bcmul(19.9, 100)); // 输出结果1990
除此之外,我在想还有没有其他的方案呢?比方说使用字符串的方式来处理,通过将小数点进行向右移动两位,不足的补0
function float2Int($price) { // 拆成整数部分和小数部分放到数组中 $temp = explode('.', $price); if (count($temp) > 2) { throw new CommonException(CommonException::INVALID_ARGS, '错误的金额字段'); } // 如果只有整数部分,则补上小数部分00 if (!isset($temp[1])) { $temp[1] = '00'; } //以防万一,小数部分补气到4位然后截取前两位小数部分 $temp[1] = substr(str_pad($temp[1], 4), 0, 2); // 链接整数部分和前两位小数并转成int型,完成金额元转分 return intval(implode('', $temp)); }
float2Int(19.9);
// 输出结果1990