php中bigs数字的numberformat错误

时间:2018-11-16 15:22:11

标签: php number-formatting

我正在开发电子商务,当我想用​​number_format()格式化数字时遇到问题。

我必须在Stripe连接上设置一个无小数的数字,所以当我进行所有计算以得出购物车的最终价格时,我会这样做:

$final_amount = number_format($final_amount, 2) * 100;

结果是Stripe理解的数字。小数字(例如970.25或1300.75)没有任何问题,但是当我有大量数字(如15717.72)时,php会引发错误“遇到格式错误的数值”。我不知道这是不是问题,大数目。

我曾经尝试使用floatval()解析$ final_amount,但是它也没有运行。

有人知道这个问题吗?谢谢:)

2 个答案:

答案 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”。因此不能转换为数字类型。