我在Makefile中执行以下操作:
echo "0.1 + 0.1" | bc
Run Code Online (Sandbox Code Playgroud)
(在实际文件中,数字是动态的,当然)
它打印.2但我想要它打印0.2.
我想这样做而不诉诸,sed但我似乎无法找到如何bc打印零.或者bc只是不能这样做?
Eli*_*les 39
您也可以使用awk格式化:
echo "0.1 + 0.1" | bc | awk '{printf "%f", $0}'
Run Code Online (Sandbox Code Playgroud)
或者用awk本身做数学运算:
echo "0.1 0.1" | awk '{printf "%f", $1 + $2}'
Run Code Online (Sandbox Code Playgroud)
pot*_*ong 33
这可能对你有用:
echo "x=0.1 + 0.1; if(x<1) print 0; x" | bc
Run Code Online (Sandbox Code Playgroud)
Sha*_*hin 23
在快速查看源代码之后(参见bc_out_num()第1461行),0如果整数部分是,我没有看到明显的方法来使得前导格式化0.除非我遗漏了某些内容,否则此行为不依赖于可以使用命令行标志更改的参数.
简答:不,我认为没有办法bc按照你想要的方式制作印刷品.
sed如果您仍想使用,我认为使用时没有任何问题bc.以下看起来并不可怕,恕我直言:
[me@home]$ echo "0.1 + 0.1" | bc | sed 's/^\./0./'
0.2
Run Code Online (Sandbox Code Playgroud)
如果你真的想避免sed,eljunior和choroba的建议都非常简洁,但它们需要依赖于价值的调整来避免尾随零.这对您来说可能是也可能不是问题.
我在文档中找不到任何有关输出格式的内容.而不是sed,你也可以达到printf:
printf '%3.1f\n' $(bc<<<0.1+0.1)
Run Code Online (Sandbox Code Playgroud)
echo "$a / $b" | bc -l | sed -e 's/^-\./-0./' -e 's/^\./0./'
这应该适用于结果为以下情况的所有情况:
解释:
对于仅以 开头的所有内容-.,替换-.为-0.
对于仅以 开头的所有内容.,替换.为0.
| 归档时间: |
|
| 查看次数: |
43259 次 |
| 最近记录: |