Sprintf标志和宽度 - Ruby

时间:2016-10-08 05:05:13

标签: ruby

我想了解sprintf的工作原理。

查看documentation这里的格式/语法%[flags][width][.precision]type

我试着在这里理解我的代码:

format('%02.2f', monthly_payment)

专注于%02.2f我理解.2f意味着将它四舍五入到两个十进制浮点数,但%02意味着什么?

像这样打破它:

  • 0 - flag
  • 2 - 宽度
  • 2-精度
  • f - type

任何人都可以用外行的术语来解释这个问题并举例说明(以便更好地理解这个概念)我可以尝试使用irb吗?

1 个答案:

答案 0 :(得分:2)

%02.2f

有这些部分:

  • 02分为两部分:
    • 0是国旗
    • 2是最小宽度
  • .2:精度(零的数量)
  • f:输入(浮动)

%2.0%02.0之间的区别是旗帜。如果给出,那么最小宽度将由左填充零来强制执行。否则,空格将被填充。

您可以使用-来右键填充。

请注意,最小宽度将包括小数空格(如果有)。

以字符串'1'

为例
format('%2f', "1")
=> "1.000000"
# Here I'm only specifying that the length is 'at least 2'.

format('%2.0f', "1")
=> " 1"
# min-width of 2, precision of zero, and padding with whitespace

format('%.2f', "1")
=> "1.00"
# just set precision, don't set min-width

format('%02.0f', "1")
=> "01"
# min-width of 2, precision of zero, and padding with zeroes

format('%-2.0f', "1")
=> "1 "
# using a dash to right pad

format('%-02.0f', "1")
=> "1 "
# when '-' is used the 0 flag will still pad with whitespace

format('%2.2f', "1")
=> "1.00"
# min-width of 2 and precision of 2

format('%5.2f', "1")
=> "01.00"
# min-width of 5, precision of 2, padding with whitespace