和其他朋友聊起来,说是他们公司临近双十一做了一套秒杀系统,价值三千多的商品,被三块钱卖出去了。这种情况大概率是金额精度操作或者格式化有误之类的问题。果不其然,最后发现是重复使用number_format函数造成金额截取。这坑没有必要跳进去,现在写下来加深下记忆力,希望自己不会犯类似错误。
number_format() 函数通过千位分组来格式化数字。
Tips:该函数支持一个、两个或四个参数。
语法
number_format(number,decimals,decimalpoint,separator)
参数 | 描述 |
---|---|
number | 必需。要格式化的数字。如果未设置其他参数,则数字会被格式化为不带小数点且以逗号(,)作为千位分隔符。 |
decimals | 可选。规定多少个小数。如果设置了该参数,则使用点号(.)作为小数点来格式化数字 |
decimalpoint | 可选。规定用作小数点的字符串。 |
separator | 可选。规定用作千位分隔符的字符串。仅使用该参数的第一个字符。比如 “xxx” 仅输出 “x”。 注释:如果设置了该参数,那么所有其他参数都是必需的。 |
技术细节
参数 | 备注 |
---|---|
返回值: | 返回已格式化的数字。 |
PHP 版本: | 4+ |
更新日志: | 自 PHP 5.4 起,该函数在参数 decimalpoint 和 separator 中支持多字节。 在更老的版本中,只使用每个分隔符的第一个字节。 |
例子
1 | <?php |
从上面的栗子可以明显看出来,重复使用number_format会导致数字异常,需要留意。