printf,sprintf打印至少两位小数

Phi*_*own 15 formatting printf

我试图弄清楚如何使用sprintf打印至少两个小数位并且没有前导零.例如

输入:

23
23.0
23.5
23.55
23.555
23.0000
Run Code Online (Sandbox Code Playgroud)

输出:

23.00
23.00
23.50
23.55
23.555
23.00
Run Code Online (Sandbox Code Playgroud)

任何格式化帮助将不胜感激

Jak*_*org 14

没有这样的内置格式说明符.您可以检查要打印的数字是否有两个或更少的小数(舍入到两位小数并进行比较),如果是,请使用%.02f.如果数字有更多小数,请使用%g说明符.这是Ruby中的一个例子:

def print_two_dec(number)
  rounded = (number*100).to_i / 100.0
  if number == rounded
    printf "%.02f\n", number
  else
    printf "%g\n", number
  end
end

[ 23, 23.0, 23.5, 23.55, 23.555 ].each do |number|
  print_two_dec(number)
end
Run Code Online (Sandbox Code Playgroud)

输出:

23.00
23.00
23.50
23.55
23.555
Run Code Online (Sandbox Code Playgroud)