Для усечения чисел «лучше» использовать (здесь я взял число, которое работает для моего примера):
$number = 120,321314;
$truncate_number = number_format($number , 1); // 120,3
$truncate_number = number_format($number , 2); // 120,32
$truncate_number = number_format($number , 3); // 120,321
Надеюсь, эта помощь проще, чем другие ответы здесь, но она проста толькодля случаев, для которых это работает.Вот случай, для которого это не работает ( demo ):
$number = 10.046;
echo number_format($number , 2); // 10.05
Функция number_format хитрая, вы можете решить вашу проблему следующим образом (с php.net):
Для предотвращения округления, которое происходит, когда следующая цифра после последней значащей десятичной дроби равна 5 (упоминается несколькими людьми ниже):
<?php
function fnumber_format($number, $decimals='', $sep1='', $sep2='') {
if (($number * pow(10 , $decimals + 1) % 10 ) == 5)
$number -= pow(10 , -($decimals+1));
return number_format($number, $decimals, $sep1, $sep2);
}
$t=7.15;
echo $t . " | " . number_format($t, 1, '.', ',') . " | " . fnumber_format($t, 1, '.', ',') . "\n\n";
//result is: 7.15 | 7.2 | 7.1
$t=7.3215;
echo $t . " | " . number_format($t, 3, '.', ',') . " | " . fnumber_format($t, 3, '.', ',') . "\n\n";
//result is: 7.3215 | 7.322 | 7.321
} ?>