尝试截断计算的值bc
,但是当我设置它时,scale=0
整个计算返回 0。设置scale=1
返回正确值 357.3,但scale=0
始终返回 0。
这是一个计算示例:
echo "scale=0; 3573 * (10 / 100)/1" | bc -l
0
echo "scale=1; 3573 * (10 / 100)/1" | bc -l
357.3
这不是使用将浮点数截断为整数的正确方法吗bc
?我想将其作为整数用于 bash 脚本编写。谢谢!
答案1
我们使用操作顺序的其他输出:
echo "scale=0; 3573 * 10 / 100" | bc -l # 357
echo "scale=0; 3573 / 100 * 10" | bc -l # 350
答案2
使用起来awk
似乎更加简单,
awk 'BEGIN { print int(3573 * (10/100)/1) }'
357
答案3
@Paul_Pedant 有正确的想法:scale
适用于计算的每个部分。 10 / 100 = 0(比例为 0):
$ bc <<< 'scale = 0; 10 / 100'
0
所以整个计算结果都是0。
答案4
使用printf
:
$ LC_ALL=C printf "%.0f\n" $(echo "3573 * (10 / 100)/1" | bc -l)
357