面试的时候碰到了这个问题,简单的研究了一下,常用的有两种方法
1.使用php的系统函数 number_format
$num = 1234567890;
echo number_format($num);
//1,234,567,890
echo number_format($num,2);
//1,234,567,890.00
echo number_format($num,2,'.','');
//1,234,567,890.00
number_format(number,decimals,decimalpoint,separator)
number 必需,要格式化的数字,如果未设置其他参数,则数字会被格式化为不带小数点且以逗号(,)作为千位分隔符
decimals 可选,规定多少个小数。如果设置了该参数,则使用点号(.)作为小数点来格式化数字
decimalpoint 可选。规定用作小数点的字符串
separator 可选。规定用作千位分隔符的字符串。仅使用该参数的第一个字符。比如 “xxx” 仅输出 “x”
要注意的是,该方法只支持,1,2,4个参数,这个方法默认返回的是一个字符串,用作数学运算的时候,转换会出错
echo number_format($num)+2;
//返回的结果是3,因为转换出来的是一个字符串,会先转换再进行运算
当你需要返回的字符串参与运算的时候,比如金融计算,需要加上第三个和第四个参数
echo number_format($s,2,'.','')+2;
//返回的结果是1234567892
2.自定义方法,调用php其他函数解决,这个方法的核心在于字符串反转,因为我们不确定这个数字有几位,所以从后往前加千分位
$num = 1234567890;
function thousandsSplit($num){
//反转字符串 0987654321
$num = strrev($num);
//使用逗号分割字符串 098,765,432,1,
$num = chunk_split($num, 3, ',');
//再次反转字符串 ,1,234,567,890
$num = strrev($num);
//去除最左边的逗号 1,234,567,890
$num = ltrim($num, ',');
echo $num;
//输出 1,234,567,890
}