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 。 如果您需要单独获得它,您可以通过不同的方法获得它。

  1. 使用字符串操作

     $ S=$(echo "32*.60" | bc ) ; echo ${S%.*} 19 

    String Manipulation语法: ${Variable%pattern} ,这将删除%之后的短匹配模式。 有关更多String操作详细信息,请参阅Advanced Bash-Scripting Guide 。

  2. 按照**chronitis**使用Scale **chronitis**

     $ echo "scale=0; 32*60/100" | bc 19 
  3. 要摆脱尾随的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