PHP如何对API返回的字符串类型数字按小数精度进行格式化
PHP字符串数值自定义小数格式化方案
问题原因
默认round()、number_format()函数采用四舍五入规则,37.2348的第三位小数为4,小于5会被舍去,因此得到37.23,不符合进位到37.24的需求。
实现方案
方案1:普通场景
直接通过向上取整逻辑实现,PHP会自动将接口返回的字符串格式数值转为数值类型参与运算:
// 接口返回的原始字符串数值 $origin = '37.2348'; // 放大100倍后向上取整,再还原为原数量级 $temp = ceil($origin * 100) / 100; // 格式化输出两位小数 $result = number_format($temp, 2); // 输出结果:37.24
方案2:高精度场景
如果涉及大数值、对精度要求高,使用BC数学函数避免浮点精度误差:
$origin = '37.2348'; $precision = 2; // 先放大指定倍数后向上取整,再还原 $temp = bcdiv(ceil(bcmul($origin, pow(10, $precision))), pow(10, $precision), $precision); $result = number_format($temp, 2); // 输出结果:37.24
内容的提问来源于stack exchange,提问作者ira
相关产品推荐
相关产品推荐

