2017-02-01 4 views
2

Ich versuche, die Zahl in die Milliarden, Millionen und Abertausende zu formatieren, wie untenBildformat negative Zahlen

proc format; 
    picture bmk_fmt (round) 
     low - 0 = '000,000,000,000)' (prefix='($') 
     0 - 1e3 = '000,000,000,000' (prefix='$') 
     1e3 - 1e6 = '000,000,000,009K' (mult=1e-3 prefix='$') 
     1e6 - 1e9 = '000,000,000,009.9M' (mult=1e-5 prefix='$') 
     1e9 - high = '000,000,000,009.9B' (mult=1e-8 prefix='$'); 
run; 

Doch wie kann ich eine solche Einstellung zu negativen Zahlen verlängern?

Z. B (1.2M) & (353K)

Antwort

3

Sie bieten fast alle Informationen, um das Problem zu lösen. Ich muss nur grundlegende Mathematik verwenden.

Mit einem < Zeichen können Sie einen Wert aus einem Bereich z. 0 aus einem negativen Bereich.

Hier ist eine endgültige Lösung.

proc format; 
    picture bmk_fmt (round default=9) 
     low - -1e9 = '009.9B)' (mult=1e-8 prefix='($') 
     -1e9 <- -1e6 = '009.9M)' (mult=1e-5 prefix='($') 
     -1e6 <- -1e3 = '009.9K)' (mult=1e-2 prefix='($') 
     -1e3 <-< 0 = '009.9)' (prefix='($') 
     0 -< 1e3 = '009.9' (prefix='$') 
     1e3 -< 1e6 = '009.9K' (mult=1e-2 prefix='$') 
     1e6 -< 1e9 = '009.9M' (mult=1e-5 prefix='$') 
     1e9 - high = '009.9B' (mult=1e-8 prefix='$'); 
run; 
+0

Ich sehe. Der Trick ist im Lovnlust

+0

Die Option 'default' steht für die Standardlänge eines Formats. Wenn Sie ein Format verwenden, müssen Sie keine Länge angeben, z. 'bmk_fmt.'. Es wird dasselbe wie 'bmk_fmt9' sein. –