PHP7.4乘法计算结果被错误截断 数值偏小问题如何修复?
PHP单位价格计算结果异常截断问题解决
问题表现
需要实现单位价格自动计算功能,其他环节逻辑正常,仅计算环节结果始终被截断,无法得到正确运算值。
- 示例场景:
14,94 * 100预期结果应为1495,实际运算得到1400 - 已尝试
number_format、round、ceil等数值处理函数,均无法解决问题 - 运行环境:PHP 7.4 + MariaDB
- 原有代码(已确认
$weight、$price取值无错误):
$gewicht_angabe = strip_tags ($weight); $preis_angabe = strip_tags ($price); $ergebnis = number_format((($preis_angabe * 100) / $gewicht_angabe), 2);
问题根源
PHP默认仅识别英文句号.作为小数分隔符,当待运算的数值字符串使用逗号,作为小数分隔符时,PHP做隐式类型转换会自动截断逗号之后的内容,仅保留整数部分参与运算,因此14,94会被识别为14,最终得到14*100=1400的错误结果。
解决方案
运算前先将数值中的逗号替换为英文句号即可,修正后代码如下:
$gewicht_angabe = strip_tags ($weight); $preis_angabe = strip_tags ($price); $preis_angabe = str_replace(',', '.', $preis_angabe); $ergebnis = number_format((($preis_angabe * 100) / $gewicht_angabe), 2);
内容的提问来源于stack exchange,提问作者hardyzbest
相关产品推荐
相关产品推荐

