Название: разделите 1234567890 на тысячи, и результат будет в виде “1234567890.00” (здесь зарезервированы два знака после запятой, которые должны обрабатываться в соответствии с фактическими требованиями названия)
Анализ: добавление тысячного разделителя-это переход от одной цифры к старшей цифре, поэтому необходимо рассмотреть возможность обработки строк с обратной стороны на переднюю.
Метод 1: вызовите функцию PHP для обработки. Используйте функции PHP напрямую, но то, что требуется для собеседования, – это не использовать системные функции
$res = number_format($num);
Способ 2: добавьте одну”, ” для каждых трех цифр в соответствии с номером на обратной стороне. Затем, если мы перевернем число и затем разделим его, мы не сможем напрямую добавить”,”, а затем перевернуть прошлое
function toNum2($str) {
$str = sprintf('%.2f',$str);
$strArr = explode('.',$str);
$leftStr = $strArr[0];
$rigthStr = $strArr[1];
$temp = implode(',',str_split(strrev($leftStr),3));
return strrev($temp) . '.' . $rigthStr;
} Способ 3 делится на 3 раза, а не на 3 раза. Если нет, то он делится на левую и правую части
function toNum1($str){
$STR = sprintf ('%. 2F', $STR); // format the number to 2 decimal places
$strArr = explode('.',$str);
$leftStr = $strArr[0];
$rigthStr = $strArr[1];
$len = strlen($leftStr);
if($len%3 == 0){
//Multiple of 3, direct intercept
$temp = str_split($leftStr,3);
return implode(",",$temp) . '.' . $rigthStr;
}else{
//It's not a multiple of 3. Calculate the part with a multiple of 3 on the right
$left = substr ($STR, 0, $len% 3); // first find the module, which is the left length
$temp = str_split(substr($leftStr,$left),3);
//Then press the left part into the front of the array
array_unshift($temp,$left);
return implode(",",$temp) . '.' . $rigthStr;
}
}Способ 4: в соответствии с последовательностью от задней части к передней, переверните последовательность, чтобы перехватить строку, и соедините”, ” каждые 3 бита
function toNum3($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)) {// to judge here, it can't be the first one to avoid adding ','
$temp = ',' . substr($leftStr,-$i,1) . $temp;
}else{
$temp = substr($leftStr,-$i,1) . $temp;
}
}
return $temp . '.' . $rigthStr;
}Метод 5: возьмите строку в качестве флэш-памяти массива, а затем объедините ее по очереди
function 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].$temp;
}else{
$temp = $str[$i].$temp;
}
}
return $temp . '.' . $rigthStr;
}