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

nin*_*ino 2 bash digits

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

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

A (Current)   B (Desired)
-----         ------
8.456         08.456
4.19          04.19
3.5           03.5
Run Code Online (Sandbox Code Playgroud)

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

anu*_*ava 5

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

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

将其用作:

fpad "8.456"
08.456

fpad "4.19"
04.19

fpad "3.5"
03.5

fpad "13.25"
13.25

fpad "1325"
1325
Run Code Online (Sandbox Code Playgroud)

使用格伦的建议read

fpad() {
   local n="${1?needs an argument}"
   local num frac
   IFS=. read num frac <<< "$n"
   printf '%02d.%d\n' "$num" "$frac"
}
Run Code Online (Sandbox Code Playgroud)

  • 我建议 `fpad() { local n="${1?needs an argument}"; 局部 num frac; IFS=. 读取 num frac &lt;&lt;&lt;"$n"; printf '%02d.%d\n' "$num" "$frac"; }` (3认同)
  • 很好的答案。一种边缘情况:“fpad 1234”输出“1234.1234” (2认同)