将(整数,精度)对转换为bash / bc中的float

时间:2012-08-31 15:05:37

标签: bash shell bc

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

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

示例:

  $value=123, $precision=2

这应该输出“1.23”。

如何从Bash优雅地完成这项工作?我正在看“bc”手册页,但我真的没有看到任何方式。我假设最简单的方法是将输入值视为字符串并插入ch​​ar'。'以某种方式处于正确的位置。

2 个答案:

答案 0 :(得分:4)

bc

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

sed

sed -e "s/[0-9]\{$precision\}$/.&/" <<< "$value"

答案 1 :(得分:2)

好的,所以我发现了Bash的一些字符串操作帮助...这样做的伎俩,但它并不漂亮。在这里张贴后代。

lastIndex=$((${#value}-1))
dotIndex=$((${#value}-$precision))
decvalue=${value:0:$dotIndex}.${value:$dotIndex:$lastIndex}