bc:设置小数点后的位数
bc
数字处理为整数:
# echo "100/3" | bc 33
bc -l
数字作为浮点对象处理:
# echo "100/3" | bc -l 33.33333333333333333333
有没有办法限制小数点后的位数?
设置scale
特殊变量:
$ echo "scale=2; 100/3" | bc 33.33
scale
仅适用于划分; 如果一些极客在乘法中需要它,那么你可以通过使用字符串操作来实现这一点。 假如你需要乘以32 * 0.60
,答案是19.20
。 如果您需要单独获得它,您可以通过不同的方法获得它。
-
使用字符串操作
$ S=$(echo "32*.60" | bc ) ; echo ${S%.*} 19
String Manipulation语法:
${Variable%pattern}
,这将删除%
之后的短匹配模式。 有关更多String操作详细信息,请参阅Advanced Bash-Scripting Guide 。 -
按照
**chronitis**
使用Scale
**chronitis**
$ echo "scale=0; 32*60/100" | bc 19
-
要摆脱尾随的0,而不是字符串操作,也可以除以1。
$ echo "0.232 * 1000" | bc 232.000 $ echo "0.232 * 1000 / 1" | bc 232
除了以前的答案
echo "scale=2; 1.0150876" | bc
返回
1.0150876
添加数学运算只能得到2个十进制数 – (NUMBER * 100)/ 100
echo "scale=2; (1.0150876 * 100) / 100" | bc
现在回来了
1.01
你也可以使用printf命令将结果舍入到3位小数
# printf "%.3f\n" $(echo "100/3" | bc -l) 3.333
四舍五入
scale = 2将答案截断为两位小数,但我们可以像这样实现四舍五入:
$ echo "a=12/104; scale=2; (a+0.005)/1" | bc -l .12