1

我有两个数字,$value 和 $precision。我需要对这些数字进行“浮点”表示(当然输出实际上是一个字符串,因为这是 bash)。

$precision 告诉我这个数字应该有多少个小数点。

例子:

  $value=123, $precision=2

这应该给出输出“1.23”。

我怎样才能从 Bash 优雅地做到这一点?我正在查看“bc”手册页,但我并没有真正看到任何方法。我假设最简单的方法是将我的输入值视为字符串并插入 char '.' 以某种方式处于正确的位置。

4

2 回答 2

4

bc

bc <<EOF
scale = $precision
$value / (10 ^ $precision)
EOF

sed

sed -e "s/[0-9]\{$precision\}$/.&/" <<< "$value"
于 2012-08-31T15:12:09.510 回答
2

好的,所以我找到了一些对 Bash 的字符串操作帮助......这可以解决问题,但它并不漂亮。在这里张贴给后代。

lastIndex=$((${#value}-1))
dotIndex=$((${#value}-$precision))
decvalue=${value:0:$dotIndex}.${value:$dotIndex:$lastIndex}
于 2012-08-31T15:18:11.227 回答