Формат числа с плавающей точкой

Не у черепахи, а в командной строке.

svn info

возвратит то, что газует, Вы проверяетесь на.

7
задан j08691 8 February 2017 в 20:27
поделиться

6 ответов

Думаю, я не могу получить то, что хочу, от number_format, поэтому я сделал это, и он отлично работает:

 public function floatNumber($number)
 {
      $number_array = explode('.', $number);
      $left = $number_array[0];
      $right = $number_array[1];
      return number_format($number, strlen($right));
 }

Спасибо всем за ваши ответы.

7
ответ дан 6 December 2019 в 07:06
поделиться

Изучите функции printf и sprintf вместо number_format .

Они дают возможность форматировать числа так, как вы wish.

printf("%d", $int) 

будет подходящим для десятичного целого числа.

printf("%4.2f", $float) 

будет подходящим для числа с плавающей запятой с двумя десятичными знаками.

number_format , похоже, предназначен для интернационализации вывода валюты, но я не думаю, что это то, что вам нужно, потому что вы упомянули десятичные «целые» числа.

11
ответ дан 6 December 2019 в 07:06
поделиться

Я не знаю лучшего способа сделать это, но вы можете сравнить тип, как в приведенном ниже коде:

$number = 234.159;
if(is_float($number)) {
 echo number_format($number, 2);
}else {
 echo $number;
}
3
ответ дан 6 December 2019 в 07:06
поделиться

Хотя это немного быстро и грязно, вы могли бы просто сделать ...

str_replace('.00', '', number_format($potentialFloat, 2));

Далеко не идеально, но эффективно.

2
ответ дан 6 December 2019 в 07:06
поделиться
rtrim(number_format($number, 2), '0.');
1
ответ дан 6 December 2019 в 07:06
поделиться

Я думаю, что ключевой проблемой является определение необходимого количества позиций. Вы бы определили 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
  }
}
1
ответ дан 6 December 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: