根据在线手册,bc对于加减乘三种算法依据输入中的最高精度来确定输出精度,不会进行自行截断,此时scale设置无效。
但是除法则相反。
echo "scale=2;1234.333"|bc
1234.333
加法:
echo "scale=2;1234+1.999"|bc
1235.999
减法:
echo "scale=2;1234-334.999"|bc
899.001
乘法:
echo "scale=2;1234.333"|bc
1234.333
echo "scale=2;1234*12.3333"|bc
15219.2922
除法:
echo "scale=2;1234/12.333"|bc
100.05
解决方法可以使用printf来控制输出精度
echo "2998.0089 * 1000" | bc
2998008.9000
printf "%.0f\n" `echo "2998.0089 * 1000" | bc`
2998009
printf "%.3f\n" `echo ".2998"`
0.300
默认做了四舍五入