2013-08-25 37 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

相关问题