Как я могу преобразовать число в, несколько формируются в Perl?

Android определенно НЕ позволяет этого, потому что это открывает множество телефонных мошенничеств, связанных с обратными платежами. Они на самом деле никогда не позволяли этого, но люди нашли хаки на старых версиях, чтобы обойти это. Каждый раз, когда Google находит один из них, они закрывают его в следующей версии. Таким образом, нет надежного способа сделать это, и если вы найдете способ, ожидайте, что он вскоре исчезнет.

7
задан brian d foy 8 January 2010 в 13:12
поделиться

5 ответов

Число:: Байты:: Человеческий модуль должен смочь выручить Вас.

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

  use Number::Bytes::Human qw(format_bytes);

  $size = format_bytes(0); # '0'
  $size = format_bytes(2*1024); # '2.0K'

  $size = format_bytes(1_234_890, bs => 1000); # '1.3M'
  $size = format_bytes(1E9, bs => 1000); # '1.0G'

  # the OO way
  $human = Number::Bytes::Human->new(bs => 1000, si => 1);
  $size = $human->format(1E7); # '10MB'
  $human->set_options(zero => '-');
  $size = $human->format(0); # '-'
20
ответ дан 6 December 2019 в 06:38
поделиться

Число:: Байты:: Человек, кажется, делает точно, что Вы хотите.

3
ответ дан 6 December 2019 в 06:38
поделиться
sub magnitudeformat {
  my $val = shift;
  my $expstr;

  my $exp = log($val) / log(10);
     if ($exp < 3)  { return $val;   }
  elsif ($exp < 6)  { $exp = 3;  $expstr = "K"; }
  elsif ($exp < 9)  { $exp = 6;  $expstr = "M"; }
  elsif ($exp < 12) { $exp = 9;  $expstr = "G"; } # Or "B".
  else              { $exp = 12; $expstr = "T"; }

  return sprintf("%0.1f%s", $val/(10**$exp), $expstr);
}
2
ответ дан 6 December 2019 в 06:38
поделиться

В чистой форме Perl я сделал это с вложенным тернарным оператором для вырезания на многословии:

sub BytesToReadableString($) {
   my $c = shift;
   $c >= 1073741824 ? sprintf("%0.2fGB", $c/1073741824)
      : $c >= 1048576 ? sprintf("%0.2fMB", $c/1048576)
      : $c >= 1024 ? sprintf("%0.2fKB", $c/1024)
      : $c . "bytes";
}

print BytesToReadableString(225939) . "/s\n";

Выводы:

220.64KB/s
2
ответ дан 6 December 2019 в 06:38
поделиться

Этот отрывок находится в PHP, и он свободно основан на некотором примере, который кто-то еще имел на их веб-сайте где-нибудь (жаль приятель, я не могу помнить).

Фундаментальное понятие вместо того, чтобы использовать, если, используйте цикл.

function formatNumberThousands($a,$dig)
{
    $unim = array("","k","m","g");
    $c = 0;
    while ($a>=1000 && $c<=3) {
        $c++;
        $a = $a/1000;
    }
    $d = $dig-ceil(log10($a));
    return number_format($a,($c ? $d : 0))."".$unim[$c];
}

number_format () вызов является библиотечной функцией PHP, которая возвращает строку с запятыми между тысячами групп. Я не уверен, существует ли что-то как он в жемчуге.

Параметр $dig устанавливает предел для количества цифр для показа. Если $dig будет равняться 2, то он даст Вам 1.2k с 1237.

К байтам формата просто разделитесь на 1 024 вместо этого.

Эта функция используется в некотором производственном коде по сей день.

0
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

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