Linux 巴什:如何计算?
我需要做一些基础数学720/304*360 但是bash的行为非常奇怪:Linux 巴什:如何计算?,linux,bash,math,Linux,Bash,Math,我需要做一些基础数学720/304*360 但是bash的行为非常奇怪: echo "720/304 * 360" | bc 720 echo "(720/304) * 360" | bc 720 echo $(((720/304) * 360)) 720 尝试这样做: echo 'scale=2; 720/304 * 360' | bc 这里需要天平,就像我一样。最好使用单引号,以避免可能的外壳扩展 使用,您也可以在此处执行此操作字符串: 或使用此处文档: 如果可以使用整数结果,则可
echo "720/304 * 360" | bc
720
echo "(720/304) * 360" | bc
720
echo $(((720/304) * 360))
720
尝试这样做:
echo 'scale=2; 720/304 * 360' | bc
这里需要天平,就像我一样。最好使用单引号,以避免可能的外壳扩展
使用,您也可以在此处执行此操作字符串:
或使用此处文档:
如果可以使用整数结果,则可以反转/和*:
echo $((720*360/304))
852
然后,它不需要临时的非整数结果,这些结果的顺序是int720/304=2,2*360=720如果您想获得一定的精度,您应该使用awk或bc进行数学计算。但要小心使用bc的舍入。因为某些操作会产生意外的结果:例如:
kent$ echo 'scale=2; 720/304 * 360' |bc
849.60
kent$ echo 'scale=3; 720/304 * 360' |bc
852.480
kent$ echo 'scale=4; 720/304 * 360' |bc
852.6240
因此,我推荐awk:
使用bc-l获取每个操作的非整数结果
echo "720/304 * 360" | bc -l
或者,在bash中缩短:
bc -l <<< '720/304*360'
bash只能做整数运算。为什么bc不能对数字进行四舍五入?回波标度=2;720/304*360'| bc>849.60
kent$ awk 'BEGIN{printf "%.2f\n", 720/304*360}'
852.63
echo "720/304 * 360" | bc -l
bc -l <<< '720/304*360'