我想了解sprintf
的工作原理。
查看documentation这里的格式/语法%[flags][width][.precision]type
我试着在这里理解我的代码:
format('%02.2f', monthly_payment)
专注于%02.2f
我理解.2f意味着将它四舍五入到两个十进制浮点数,但%02
意味着什么?
像这样打破它:
任何人都可以用外行的术语来解释这个问题并举例说明(以便更好地理解这个概念)我可以尝试使用irb吗?
答案 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