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