如何将浮点数格式化为一定数量的十进制和整数?

Rav*_*mer 6 ruby

我试图将Ruby中的浮点格式化为四位数,包括小数.

例如:

1 => 01.00
2.4 => 02.40
1.4455 => 01.45
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试格式化浮动,如下所示:

str_result = " %.2f " %result
Run Code Online (Sandbox Code Playgroud)

哪个成功将小数位限制为两个.

我也知道:

str_result = " %2d " %result
Run Code Online (Sandbox Code Playgroud)

哪个成功变成101,但丢失了小数位.

我尝试将这些结合起来:

str_result = " %2.2f " %result
Run Code Online (Sandbox Code Playgroud)

没有明显的效果.它具有与之相同的结果%.2f.

有没有办法强制Ruby将字符串格式化为这种四位数格式?

old*_*god 10

你可以用sprintf('%05.2f', value).

关键是格式是width . precision,其中width表示整个数字的最小宽度,而不仅仅是整数部分.

def print_float(value)
  sprintf('%05.2f', value)
end
print_float(1)
# => "01.00" 
print_float(2.4)
# => "02.40" 
print_float(1.4455)
# => "01.45" 
Run Code Online (Sandbox Code Playgroud)

  • 是的,就是这样:`[1,2.4,1.4455] .map {| amount | sprintf('%05.2f',amount)}#=> ["01.00","02.40","01.45"]`.关键是格式为*width*`.`*precision*,其中width表示整个数字的最小宽度,而不仅仅是整数部分.还要注意使用`0`作为零填充的前缀. (3认同)