我有两个数字,$value 和 $precision。我需要对这些数字进行“浮点”表示(当然输出实际上是一个字符串,因为这是 bash)。
$precision 告诉我这个数字应该有多少个小数点。
例子:
$value=123, $precision=2
这应该给出输出“1.23”。
我怎样才能从 Bash 优雅地做到这一点?我正在查看“bc”手册页,但我并没有真正看到任何方法。我假设最简单的方法是将我的输入值视为字符串并插入 char '.' 以某种方式处于正确的位置。
在bc
:
bc <<EOF
scale = $precision
$value / (10 ^ $precision)
EOF
在sed
:
sed -e "s/[0-9]\{$precision\}$/.&/" <<< "$value"
好的,所以我找到了一些对 Bash 的字符串操作帮助......这可以解决问题,但它并不漂亮。在这里张贴给后代。
lastIndex=$((${#value}-1))
dotIndex=$((${#value}-$precision))
decvalue=${value:0:$dotIndex}.${value:$dotIndex:$lastIndex}