题目:将1234567890分成千分位,结果为“1,234,567,890.00”(此处保留小数点后两位,根据题目实际要求处理)解析:添加千位分位数分隔符是从个位数到高位,所以要考虑从后往前处理字符串。方法一:调用php函数处理。直接使用php函数,但是面试要求应该是$res=number_format($num)不允许使用系统函数;方法二,按照个数从后面数,每3位加一个',',然后如果是,我们把这个数取反,然后除,如果不是,直接加',',然后取反过去函数toNum2($str){$str=sprintf('%.2f',$str);$strArr=explode('.',$str);$leftStr=$strArr[0];$rigthStr=$strArr[1];$temp=implode(',',str_split(strrev($leftStr),3));返回strrev($temp)。'.'.$rigthStr;}该方法分为3的倍数和不是3的倍数三个部分,如果不是,则分为左右两部分。函数toNum1($str){$str=sprintf('%.2f',$str);//将数字格式化为小数点后两位$strArr=explode('.',$str);$leftStr=$strArr[0];$rigthStr=$strArr[1];$len=strlen($leftStr);if($len%3==0){//是3的倍数,直接截取$temp=str_split($leftStr,3);返回implode(",",$temp)。'.'.$正确性;}else{//不是3的倍数,计算右边是3的倍数的部分$left=substr($str,0,$len%3);//先求模,这个touch就是左边的长度$temp=str_split(substr($leftStr,$left),3);//然后把左边的部分推到数组的前面array_unshift($temp,$left);返回implode(",",$temp)。'.'.$钻机thStr;}}方法四:按照从后到前的顺序,逆序截取字符串,每3位拼接一次","functiontoNum3($str){$str=sprintf('%.2f',$str);$strArr=explode('.',$str);$leftStr=$strArr[0];$rigthStr=$strArr[1];$len=strlen($leftStr);$temp='';for($i=1;$i<=$len;$i++){if($i%3==0&&($i!=$len)){//这里需要判断,不能第一个数字避免在前面添加more','$temp=','.substr($leftStr,-$i,1).$temp;}else{$temp=substr($leftStr,-$i,1).$temp;}}返回$temp。'.'.$rigthStr;}方法五:将字符串作为数组闪回,然后拼接函数toNum3($str){$str=sprintf('%.2f',$str);$strArr=explode('.',$str);$leftStr=$strArr[0];$rigthStr=$strArr[1];$len=strlen($leftStr);$temp='';for($i=$len-1,$j=1;$i>=0;$i--,$j++){if($j%3==0){$temp=",".$str[$i].$临时;}else{$temp=$str[$i].$temp;}}返回$temp。'.'.$rigthStr;}
