bc
将数字作为整数处理:
# echo "100/3" | bc
33
bc -l
将数字作为浮点对象处理:
# echo "100/3" | bc -l
33.33333333333333333333
有没有办法限制小数点后的位数?
答案1
设置scale
特殊变量:
$ echo "scale=2; 100/3" | bc
33.33
答案2
scale
仅适用于除法;如果某些极客需要在乘法中使用,那么您可以使用字符串操作来实现。假设您需要乘以32 * 0.60
,答案是19.20
。如果您需要在答案中单独得到 19,则可以通过不同的方法获得它。
使用字符串操作
$ S=$(echo "32*.60" | bc ) ; echo ${S%.*} 19
字符串操作语法:
${Variable%pattern}
,这将删除后面的短匹配模式%
。有关字符串操作的更多详细信息,请参阅高级 Bash 脚本指南。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
答案3
您还可以使用 printf 命令将结果四舍五入到小数点后 3 位
# printf "%.3f\n" $(echo "100/3" | bc -l)
3.333
答案4
四舍五入
scale=2 将答案截断为两位小数,但我们可以像这样实现四舍五入:
$ echo "a=12/104; scale=2; (a+0.005)/1" | bc -l
.12