Andere Tipps

Python 2.x, 78 Zeichen

a=input()
i=0
while a>=1e3:a/=1e3;i+=1
print"%g"%round(a,input())+" kMGTPE"[i]

Diese Version ( 75 Zeichen ) verwendet printf die zusätzliche Nullen gedruckt wird und folgt die Round-to-even-Regel.

a=input()
i=0
while a>=1e3:a/=1e3;i+=1
print"%%.%df"%input()%a+" kMGTPE"[i]

Perl 114 111 104 Zeichen

Mein erster Code-Golf-Eintrag!

Argumente von der Standardeingabe zur Verfügung gestellt: perl fna.pl 918395 1

($n,$d)=@ARGV;
@n=$n=~/./g;
@s=' kMGTPE'=~/./g;
printf"%.".(@n>3?$d:0)."f%s",$n/(10**($#n-$#n%3)),$s[@n/3];

Ausgabe:

  

918.4k


De-golfed Version (mit Erläuterung):

( $number, $dp ) = @ARGV;      # Read in arguments from standard input

@digits = split //, $number;   # Populate array of digits, use this to count
                               # how many digits are present

@suffix = split //, ' kMGTPE'; # Generate suffix array

$number/(10**($#n-$#n%3));     # Divide number by highest multiple of 3

$precision = @n>3 ? $dp : 0;   # Determine number of decimal points to print

sprintf "%.".$precision."f%s", # "%.2f" prints to 2 dp, "%.0f" prints integer
        $number, $suffix[@n/3];# Select appropriate suffix

Javascript 114 Zeichen

function m(n,d){p=M.pow
d=p(10,d)
i=7
while(i)(s=p(10,i--*3))<=n&&(n=M.round(n*d/s)/d+"kMGTPE"[i])
return n}

Auch 114 - Verwendung von Spidermonkey - Eingang auf STDIN

[n,d]=readline().split(' '),x=n.length,p=Math.pow,d=p(10,d)
x-=x%3
print(Math.round(n*d/p(10,x))/d+" kMGTPE"[x/3])

104 - Funktion

function(a,b,c,d){
    c=(''+a).length;
    d=Math.pow;
    b=d(10,b);
    return((a*b/d(10,c-=c%3))+.5|0)/b+' kMGTPE'[c/3]
}

Welche 99 auch wird, wenn Sie die (''+a) mit a ersetzen und versprechen, nur Zeichenfolgen übergeben:)

dc - 75 Zeichen

A7 1:U77 2:U71 3:U84 4:U80 5:U69 6:U[3+r1-r]sJ?sddZd3~d0=Jrsp-Ar^ldk/nlp;UP

Uses Z (Anzahl der Ziffern) %3 das Gerät zu finden. Der größte Teil des Codes ist, um die Einheiten Zeichenfeld zur Einstellung der eigentliche Code ist 39 Zeichen. Die J Makro passt, wenn %3 0 gleich, zu vermeiden, in der 7. Druck 0.918M. Testfall. Es ist nicht richtig rund.

Wenn Sie dc sprechen, fühlen sich frei, es zu verbessern.

PHP 57 Zeichen

for($a=num+1;$a>=1;$a=$a/26)$c=chr(--$a%26+65).$c;echo$c;

Haskell, 126 (ohne Import, es ist eine Funktion, die zwei Argumente verwendet):

f n p|l>3=showFFloat (Just p) (c n/c 10^(l-w)) [" kMGTPE"!!f]|True=show n where(f,w)=divMod l 3;c=fromIntegral;l=length$show n

Erweitert:

import Numeric

doit :: Integer -> Int -> String
doit n p
    | l > 3 = showFFloat (Just p) d [" kMGTPE" !! f]
    | otherwise = show n
    where
    d = (fromIntegral n) / fromIntegral (10^(l-w))
    (f,w) = divMod l 3
    l = length $ show n

Perl 94 Chars

($_,$d)=@ARGV;$l=length;@u=' kMGTPE'=~/./g;printf"%.".($l>3?$d:0)."f$u[$l/3]",$_/10**($l-$l%3)

Verbrauch:

perl abbreviator.pl 47475782130 2

Ausgabe:

47.48G
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top