shell编程中bc小数位的控制

根据在线手册,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

默认做了四舍五入

 

posted @ 2012-08-05 13:14  鸡蛋的冬天  阅读(1630)  评论(0编辑  收藏  举报