带小数点的bash和bc数学计算
我试图在Bash脚本中使用“bc”实现以下计算,但是“scale”选项产生了一个错误的结果,结果末尾有两个额外的零,这意味着我必须手动修剪它(丑陋) 计算: ((2592000-239)÷2592000)×100 预期结果:99090779321(但我只想显示小数点后2位) 在Bash中:带小数点的bash和bc数学计算,bash,math,decimal-point,bc,Bash,Math,Decimal Point,Bc,我试图在Bash脚本中使用“bc”实现以下计算,但是“scale”选项产生了一个错误的结果,结果末尾有两个额外的零,这意味着我必须手动修剪它(丑陋) 计算: ((2592000-239)÷2592000)×100 预期结果:99090779321(但我只想显示小数点后2位) 在Bash中: echo "scale=2; ((2592000-239)/2592000)*100" | bc 99.00 echo "scale=3; ((2592000-239)/2592000)*100" | b
echo "scale=2; ((2592000-239)/2592000)*100" | bc
99.00
echo "scale=3; ((2592000-239)/2592000)*100" | bc
99.900
echo "scale=4; ((2592000-239)/2592000)*100" | bc
99.9900
echo "scale=5; ((2592000-239)/2592000)*100" | bc
99.99000
echo "scale=8; ((2592000-239)/2592000)*100" | bc
echo "scale=8; ((2592000-239)/2592000)*100" | bc
99.99077900
echo "scale=10; ((2592000-239)/2592000)*100" | bc
99.9907793200
根据手册页:
数字
bc中最基本的元素是数字。数字是任意精度的数字。此精度为整数和整数
部分和小数部分。所有数字都有代表性
内部为十进制,所有计算均以十进制完成。(此版本截断除法和乘法运算的结果。)
数字有两个属性,长度
还有天平。长度是数字中有效小数位数的总数,小数位数是数字的总数
小数点后的小数位数。例如:
.000001的长度为6,刻度为6。
1935.000的长度为7,比例尺为3
我理解正确吗?您可以使用:
echo 'scale=2; 100*(2592000-239)/2592000' | bc -l
99.99
你得到的是99.00
,因为你先除法得到.99
,当它乘以100
时,它变成99.00
(由于scale-2
),你可以使用:
echo 'scale=2; 100*(2592000-239)/2592000' | bc -l
99.99
你得到的是
99.00
,因为你先除法得到的是.99
,当它乘以100
时,它变成99.00
(由于scale-2
),如果你不想检查你的bc
语句是否有正确的数学运算顺序,(刻度用于除法)只需使用默认精度a格式计算bc
在bash
中的输出,如下所示:
printf "%.2f\n" $( bc -l <<< '((2592000-239)/2592000)*100' )
# 99.99
printf“%.2f\n”$(bc-l如果不想检查bc
语句的正确数学运算顺序,(刻度用于除法),只需使用默认精度a格式计算bc
,如:
printf "%.2f\n" $( bc -l <<< '((2592000-239)/2592000)*100' )
# 99.99
printf“%.2f\n”$(bc-l