echo 和 printf 结果的差异

echo 和 printf 结果的差异

为什么我看到以下代码的结果有所不同:

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的数字处理之间的区别。printfbc

我想这printf会四舍五入最后一位数字,而bc不会只是输出计算出的数字。

您可以通过让两种方法输出更多数字来检查这一点。

相关内容