2017-02-02 3 views
-3

Есть ли способ в Perl, который принимает большое количество и форматирует его в постфиксных символы, такой как «M», «K» и т.д. Например:Формата большого целое число в Perl

number = 9,999,999 output = 10.0M 

я не могу используйте такие вещи, как «Math :: Round» или «Format :: Number», поскольку perl установлен, и я не могу установить какие-либо новые модули.

+2

* "Я не могу установить новые модули." * В случае, если iss ue заключается в том, что у вас нет привилегий root/admin, [вам не нужен root для установки модулей] (http://stackoverflow.com/q/3735836). – ThisSuitIsBlackNot

+0

Насколько это точно? Сколько цифр после десятичного знака должно отображаться? – AntonH

+1

Скопируйте код из https://metacpan.org/pod/Number::FormatEng (чистый Perl), так же как вы скопируете код из любого ответа здесь. – toolic

ответ

0

Основная идея:

$number=9876543; 
$NumString = sprintf("%.1f M", int($number/100000 + 0.5)/10); 
print "$number $NumString\n"; 

ВЫВОД: 9876543 9.9 M

Версия с подпрограммой

sub MegaNumber { 
    my($number, $places) = @_; 
    $d2 = 10**$places; 
    $d1 = 1000000/$d2; 
    $fmt = "%.". $places . "f M"; 
    sprintf($fmt, int($number/$d1 + 0.5)/$d2); 
} 

print "9876543 ", MegaNumber(9876543, 1), "\n"; 
print "9876543 ", MegaNumber(9876543, 2), "\n"; 
print "987654 ", MegaNumber(987654, 2), "\n"; 

Выход:

9876543 9.9 M 
9876543 9.88 M 
987654 0.99 M