Не у черепахи, а в командной строке.
svn info
возвратит то, что газует, Вы проверяетесь на.
Думаю, я не могу получить то, что хочу, от number_format, поэтому я сделал это, и он отлично работает:
public function floatNumber($number)
{
$number_array = explode('.', $number);
$left = $number_array[0];
$right = $number_array[1];
return number_format($number, strlen($right));
}
Спасибо всем за ваши ответы.
Изучите функции printf
и sprintf
вместо number_format
.
Они дают возможность форматировать числа так, как вы wish.
printf("%d", $int)
будет подходящим для десятичного целого числа.
printf("%4.2f", $float)
будет подходящим для числа с плавающей запятой с двумя десятичными знаками.
number_format
, похоже, предназначен для интернационализации вывода валюты, но я не думаю, что это то, что вам нужно, потому что вы упомянули десятичные «целые» числа.
Я не знаю лучшего способа сделать это, но вы можете сравнить тип, как в приведенном ниже коде:
$number = 234.159;
if(is_float($number)) {
echo number_format($number, 2);
}else {
echo $number;
}
Хотя это немного быстро и грязно, вы могли бы просто сделать ...
str_replace('.00', '', number_format($potentialFloat, 2));
Далеко не идеально, но эффективно.
Я думаю, что ключевой проблемой является определение необходимого количества позиций. Вы бы определили 13,01 как 13, потому что первым десятичным знаком был 0? Поскольку printf и числовой формат требуют, чтобы вы знали, сколько десятичных знаков, я не знаю, сработает ли это для вас.
Может быть, что-то вроде этого (это много функций, но ищет первый 0, а затем возвращает усеченная строка). Да, это интенсивно, но, возможно, это лучший способ для вас.
function show_number($number, $max = 8){ if(strpos($number, '.')){ $decimal = strpos($number, '.'); if(strpos($number, '.0')){ return substr($number, 0, $decimal);//returns whole if zero is first } else { if(strpos(substr($number, $decimal, $max), '0')){ $zero = strpos(substr($number, $decimal, $max), '0'); return substr($number, 0, $decimal+$zero);//returns number w/0 first zero } else { return substr($number, 0, $decimal+$max+1); //returns number with max places } } } else { return $number; //returns number if no decimals } }