Как заставить number_format () не округлять числа - PullRequest
20 голосов
/ 30 сентября 2010

У меня есть этот номер:

$double = '21.188624';

После использования number_format($double, 2, ',', ' ') я получаю:

21,19

Но я хочу:

21,18

ЛюбойИдея, как я могу сделать эту работу?

Спасибо.

Ответы [ 14 ]

0 голосов
/ 28 октября 2014

Если вам не важно, что стоит за десятичной точкой, вы можете разыграть float как int, чтобы избежать округления:

$float = 2.8;
echo (int) $float; // outputs '2'
0 голосов
/ 30 мая 2014
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;
}
0 голосов
/ 15 мая 2014
$finalCommishParts = explode('.',$commission);
$commisshSuffix = (isset($finalCommishParts[1])?substr($finalCommishParts[1],0,2):'00');
$finalCommish = $finalCommishParts[0].'.'.$commisshSuffix;
0 голосов
/ 30 сентября 2010

используйте эту функцию:

function number_format_unlimited_precision($number,$decimal = '.')
{
   $broken_number = explode($decimal,$number);
   return number_format($broken_number[0]).$decimal.$broken_number[1]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...