【问题标题】:How to format a minus number with padding in Erlang如何在 Erlang 中使用填充格式化负数
【发布时间】:2013-08-29 16:32:22
【问题描述】:

有没有在 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

【问题讨论】:

    标签: erlang format


    【解决方案1】:

    目前在 Erlang 中没有直接的方法。填充字符适用于整个字段,它们无法仅填充实际值。精度字段用于打印整数的基数。使用 ~w 并没有帮助,因为精度的行为与字段宽度相同。我自己最近也在尝试这样做,但没有想出一个简单的解决方案。

    编辑: 如果你看这里 https://github.com/rvirding/luerl/blob/develop/src/luerl_string.erl#L156 有一个函数 format 它执行 C sprintf 之类的格式化输出。它是为 Lua 实现编写的,可能比您需要的更通用,但请查看函数 print_integerprint_float 进行基本处理。我有一些更好的功能,我应该在今晚推出。

    【讨论】:

    • 感谢您的评论。我会寻找不同的解决方案。
    猜你喜欢
    • 2010-11-18
    • 2017-06-26
    • 1970-01-01
    • 2011-07-09
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多