2013-08-25 40 views
1

在Erlang中使用零填充格式化減數是否有一種好方法?以下對於無符號值運作良好,但對於負值,在符號前填充零。如何在Erlang中使用填充格式化負數

io:format("~4..0B~n", [42]). 
0042 
ok 

io:format("~4..0B~n", [-42]). 
0-42 
ok 

我想到的是以下格式。

(紅寶石)

1.9.2-p290 :004 > sprintf("%05d", -42) 
"-0042" 
1.9.2-p290 :005 > sprintf("%05d", 42) 
"00042" 

(蟒蛇)

>>> "%05d" % -42 
'-0042' 
>>> "%05d" % 42 
'00042' 

我已經提到了以下幾個問題,但一直沒能找到其中一個談論負值。

How to format a number with padding in Erlang

Erlang: How to transform a decimale into a Hex string filled with zeros

回答

3

目前有在二郎山這樣做的直接方式。填充字符用於整個字段,它們不能填充實際值。精度字段用於打印整數的基數。使用~w沒有幫助,因爲精度的行爲與字段寬度相同。我自己最近試圖做這個,而不是想出一個簡單的解決方案。

編輯: 如果你看看這裏https://github.com/rvirding/luerl/blob/develop/src/luerl_string.erl#L156有一個函數format這確實是C sprintf像格式化輸出。它是爲Lua實現編寫的,可能比您需要的更一般,但請參閱基本處理函數print_integerprint_float。我在旅途中有一些更好的功能,我今晚應該推出。

+0

謝謝您的評論。我會尋找不同的解決方案。 – parroty

相關問題