如何修复bash脚本中没有1/59=0的1/59=0.016949153
在bash脚本中,我有1个这样的脚本:如何修复bash脚本中没有1/59=0的1/59=0.016949153,bash,output,Bash,Output,在bash脚本中,我有1个这样的脚本: n1 = 1 n0 = 59 # compute p1 p1=$((n1/n0)) echo "p1 = $p1" 我想我的输出是p1=1/59=0.016949153 但实际上,输出是p1=0 那么,如何修复它。请帮帮我,BASH不会做任何浮点运算。您可以使用bc或awk 例如: p1=$(bc -l <<< "scale=5; $n1/$n0") echo "$p1" .01694 BASH不做任何浮点运算。您可以使用bc或aw
n1 = 1
n0 = 59
# compute p1
p1=$((n1/n0))
echo "p1 = $p1"
我想我的输出是p1=1/59=0.016949153
但实际上,输出是p1=0
那么,如何修复它。请帮帮我,BASH不会做任何浮点运算。您可以使用
bc
或awk
例如:
p1=$(bc -l <<< "scale=5; $n1/$n0")
echo "$p1"
.01694
BASH不做任何浮点运算。您可以使用
bc
或awk
例如:
p1=$(bc -l <<< "scale=5; $n1/$n0")
echo "$p1"
.01694
您可以使用
bc
获得任意精度的数学:
pax> n1=355 ; n0=113
pax> p1=$(echo "scale=50;$n1/$n0" | BC_LINE_LENGTH=9999 bc) ; echo $p1
3.14159292035398230088495575221238938053097345132743
为了获得更长的结果,bc
的行长度停止了恼人的换行行为
如果你有像我一样的反向波兰思维,你也可以使用dc
:
pax> n1=355 ; n0=113
pax> echo 50 k $n1 $n0 / p | dc
3.14159292035398230088495575221238938053097345132743
在这两种情况下,您都可以设置要使用的比例(通过在
bc
中设置scale
,或在dc
中使用k
命令)。您可以使用bc
获得任意精度的数学:
pax> n1=355 ; n0=113
pax> p1=$(echo "scale=50;$n1/$n0" | BC_LINE_LENGTH=9999 bc) ; echo $p1
3.14159292035398230088495575221238938053097345132743
为了获得更长的结果,bc
的行长度停止了恼人的换行行为
如果你有像我一样的反向波兰思维,你也可以使用dc
:
pax> n1=355 ; n0=113
pax> echo 50 k $n1 $n0 / p | dc
3.14159292035398230088495575221238938053097345132743
在这两种情况下,您都可以设置要使用的缩放(通过在bc
中设置scale
或使用dc
)中的k
命令。我想添加
p1=$(python -c "print $n1*1.0/$n0")
我想补充一点
p1=$(python -c "print $n1*1.0/$n0")
无法处理浮动。如果需要3位小数的精度,可以将其乘以1000,然后相应地打印出来。不过最好使用。无法处理浮动。如果需要3位小数的精度,可以将其乘以1000,然后相应地打印出来。如果我希望输出从.01694915254237288135更改为.01695,则最好使用。我该怎么办?Thanks@TrungTrung:请参阅有关使用
scale=5的更新
非常感谢。我刚刚解决了这个问题:)如果我想将输出从.01694915254237288135更改为.01695。我该怎么办?Thanks@TrungTrung:请参阅有关使用scale=5的更新
非常感谢。我刚刚解决了这个问题:)非常感谢。非常感谢。