我正在开发电子商务,当我想用number_format()格式化数字时遇到问题。
我必须在Stripe连接上设置一个无小数的数字,所以当我进行所有计算以得出购物车的最终价格时,我会这样做:
$final_amount = number_format($final_amount, 2) * 100;
结果是Stripe理解的数字。小数字(例如970.25或1300.75)没有任何问题,但是当我有大量数字(如15717.72)时,php会引发错误“遇到格式错误的数值”。我不知道这是不是问题,大数目。
我曾经尝试使用floatval()解析$ final_amount,但是它也没有运行。
有人知道这个问题吗?谢谢:)
答案 0 :(得分:1)
几个注意事项。
“遇到格式错误的数值” 是通知,而不是错误。
我不相信 1300.75 对您有用。我不相信这是因为您仅给number_format两个参数。您收到该通知是因为number_format正在用千位分隔符“,”格式化您的电话号码。
$final_amount = number_format($final_amount, 2, ".", "") * 100;
应该采取技巧来删除该通知。
答案 1 :(得分:0)
问题不是number_format()函数,而是您的计算。您正在将字符串与整数相乘。效果不是很好。
$final_amount = number_format($final_amount * 100, 2);
工作正常。
更新: 我的结论并不完全正确。如果字符串可转换为int或float(请参阅PHP手册中的type juggling),则将int与字符串相乘确实可行。但是number_format()创建的字符串看起来像这样:“ 15,717.72”。因此不能转换为数字类型。