У меня есть этот номер:
$double = '21.188624';
После использования number_format($double, 2, ',', ' ') я получаю:
number_format($double, 2, ',', ' ')
21,19
Но я хочу:
21,18
ЛюбойИдея, как я могу сделать эту работу?
Спасибо.
Если вам не важно, что стоит за десятичной точкой, вы можете разыграть float как int, чтобы избежать округления:
float
int
$float = 2.8; echo (int) $float; // outputs '2'
public function numberFormatPrecision( $number, $separator = '.', $format = 2 ){ $response = ''; $brokenNumber = explode( $separator, $number ); $response = $brokenNumber[0] . $separator; $brokenBackNumber = str_split($brokenNumber[1]); if( $format < count($brokenBackNumber) ){ for( $i = 1; $i <= $format; $i++ ) $response .= $brokenBackNumber[$i]; } return $response; }
$finalCommishParts = explode('.',$commission); $commisshSuffix = (isset($finalCommishParts[1])?substr($finalCommishParts[1],0,2):'00'); $finalCommish = $finalCommishParts[0].'.'.$commisshSuffix;
используйте эту функцию:
function number_format_unlimited_precision($number,$decimal = '.') { $broken_number = explode($decimal,$number); return number_format($broken_number[0]).$decimal.$broken_number[1]); }