![echo 和 printf 结果的差异](https://linux22.com/image/117321/echo%20%E5%92%8C%20printf%20%E7%BB%93%E6%9E%9C%E7%9A%84%E5%B7%AE%E5%BC%82.png)
为什么我看到以下代码的结果有所不同:
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
不会只是输出计算出的数字。
您可以通过让两种方法输出更多数字来检查这一点。