【问题标题】:Always show trailing zeros in bc始终在 bc 中显示尾随零
【发布时间】:2016-05-22 14:46:49
【问题描述】:

如何在整数中显示尾随零或如何将其转换为 bc 中的浮点数? 我知道scale,但它只适用于浮点数:

$ echo "scale=3; 3/2" | bc
1.500
$ echo "scale=3; 1+1" | bc
2

我想得到的结果看起来像2.000。我想用 sed 做起来并不难,但我是这方面的新手。

【问题讨论】:

  • 您可以将bc 的输出通过管道传输到printfecho "scale=3; 1+1" | bc | xargs printf "%.3f\n"。 (xargs 似乎是必要的,我不知道如何直接通过管道输入 printf)。

标签: unix bc


【解决方案1】:

除以 1 转换为带小数部分的数字:

$ echo "scale=3; 1+1/1" | bc
2.000

一旦完成任何类型的除法,如果该值最终成为输出的一部分,它将以指定的位数打印。

它们不是 bc 中的“浮点数”——它们是“定点”——小数点后具有固定位数的数字。在内部,它们只是整数除以 10 的固定幂(由scale 命令设置)

【讨论】:

  • 结果为0时不起作用:$ echo "scale=3; 1-1/1" | bc
【解决方案2】:
echo "scale=3; $1+$2" | bc | sed 's/^[0-9]*$/&\.000/g'

对我来说很好用:

$ echo "scale=3; 3/2" | bc | sed 's/^[0-9]*$/&\.000/g'
1.500
$ echo "scale=3; 3+2" | bc | sed 's/^[0-9]*$/&\.000/g'
5.000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多