这个是常用功能了,网上很多文章写的都不完整。特整理。
首先说明,round()函数并不能总是起作用, 故而不能实现本题的要求,比如:
# 不起作用
php -r "echo round(10000, 2), PHP_EOL;" // 10000
# 起作用
php -r "echo round(10000.256, 2), PHP_EOL;" // 10000.26
以下是两种常用的方式,相对比较严谨。
0、使用函数sprintf,这个各种情况都没问题。
php -r "echo sprintf('%.1f', '10000.25'), PHP_EOL;"
1、使用函数number_format, 这个函数的功能是以千位分隔符方式格式化一个数字。
# 两位参数的方式不通用,不能覆盖全部情况
php -r "echo number_format('10.25', 1), PHP_EOL;" // 10.3
php -r "echo number_format('10000.25', 1), PHP_EOL;" // 10,000.3
# 所以用4位参数比较通用。
php -r "echo number_format('10000.25', 1, '.', ''), PHP_EOL;" // 10000.3
注:以上2中方式都是按照四舍五入进位的。