formatting - printf, sprintf 至少打印两位小数

我正在尝试弄清楚如何使用 sprintf 打印至少两位小数且没有前导零。比如

输入:

23
23.0
23.5
23.55
23.555
23.0000

输出:

23.00
23.00
23.50
23.55
23.555
23.00

任何格式帮助将不胜感激

最佳答案

没有这样的内置格式说明符。您可以检查要打印的数字是否有两位或更少的小数(四舍五入到两位小数并比较),如果是,请使用 %.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

输出:

23.00
23.00
23.50
23.55
23.555

https://stackoverflow.com/questions/2966823/

相关文章:

c# - 使用语句的格式/缩进 (C#)

c# - 如何更改datagridview中列的颜色?

c# - 在 Visual Studio 201x 中关闭 #region 的自动格式化

c# - 如何格式化 MVC3 中 TextBoxFor() 显示的 DateTime?

formatting - 取决于变量的输出格式字符串

java - 删除 Eclipse 中的尾随空格——来自评论

php - 如何创建友好的日期格式(例如 "submitted 2 days ago")

javascript - 在格式化数字输入时验证数字输入

c# - 用逗号代替小数将数字格式化为字符串

r - 将带逗号的货币转换为数字