如何用PHP实现按千克单价与重量计算商品对应价格的函数
PHP 价格计算函数实现
你给出的场景逻辑为:每千克商品单价 × 商品重量(千克)= 最终价格。按这个逻辑,每千克50元的大米,0.5kg的售价为25元是符合计算规则的,你提到的priesCal(50,0.250)返回25的需求存在参数笔误,正常逻辑下priesCal(50, 0.5)才会返回25。
以下是两种实现方案:
基础实现(普通精度场景)
适合对价格精度要求不高的普通零售场景,直接计算后保留两位小数:
function priesCal ($kg_prise,$qty) { return round($kg_prise * $qty, 2); }
测试效果:
- 调用
priesCal(50, 0.5)输出25,匹配你给出的0.5kg售价场景 - 调用
priesCal(50, 0.25)输出12.5,对应250g商品的售价
高精度实现(企业级业务场景)
避免PHP浮点数运算导致的精度丢失问题,使用BC数学函数做高精度计算:
function priesCal ($kg_prise,$qty) { // 转字符串传入避免浮点数隐式精度损失,保留2位小数符合货币标准 return bcmul((string)$kg_prise, (string)$qty, 2); }
如果你的业务确实需要priesCal(50,0.250)返回25,说明第二个参数的单位不是千克,可根据实际单位调整计算逻辑即可。
内容的提问来源于stack exchange,提问作者Jenil Chavda
相关产品推荐
相关产品推荐

