我正在尝试弄清楚如何使用 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/