为什么我看到以下代码的结果有所不同:
read a
printf "%.3f\n" $(bc -l <<< "$a")
结果:17.929 和
read a
echo "scale=3; $a" | bc -l
结果:17.928
我的输入表达式是5+50*3/20 + (19*2)/7。
他们看似做着同样的事情,但最终的结果却不一样。为什么?
有什么变化(利用回声)我可以在上面的第二个片段中得到与第一个片段相同的结果吗?
答案1
这不是echo
和之间的区别,而是和printf
的数字处理之间的区别。printf
bc
我想这printf
会四舍五入最后一位数字,而bc
不会只是输出计算出的数字。
您可以通过让两种方法输出更多数字来检查这一点。