如何修改浮点数以显示至少n位数字

在 bash 中,如何修改 afloat以便点之前的部分至少有两位数?

我想让A 列中的数字显示为B 列

A (Current)   B (Desired)
-----         ------
8.456         08.456
4.19          04.19
3.5           03.5

我做了很多搜索,但我发现的大部分内容都是关于如何显示带有N 位小数的数字(例如17.7647 to 17.76),这没有帮助。

回答

这是一个实用函数,bash可以使用printf以下方法实现此目的:

fpad() {
   local n="${1?needs an argument}"
   [[ $n == [0-9].* ]] && echo "0$n" || echo "$n"
}

将其用作:

fpad "8.456"
08.456

fpad "4.19"
04.19

fpad "3.5"
03.5

fpad "13.25"
13.25

fpad "1325"
1325

使用格伦的建议read

fpad() {
   local n="${1?needs an argument}"
   local num frac
   IFS=. read num frac <<< "$n"
   printf '%02d.%dn' "$num" "$frac"
}

  • I'd suggest `fpad() { local n="${1?needs an argument}"; local num frac; IFS=. read num frac <<<"$n"; printf '%02d.%dn' "$num" "$frac"; }`
  • Great answer. One edge case: `fpad 1234` outputs `1234.1234`

以上是如何修改浮点数以显示至少n位数字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>