Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复bash脚本中没有1/59=0的1/59=0.016949153_Bash_Output - Fatal编程技术网

如何修复bash脚本中没有1/59=0的1/59=0.016949153

如何修复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

在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
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的更新
非常感谢。我刚刚解决了这个问题:)非常感谢。非常感谢。