# ---------------------------------------------------------------------------- # Calculadora: + - / * ^ % # mais operadores, ver `man bc` # Obs.: números fracionados podem vir com vírgulas ou pontos: 1,5 ou 1.5 # Obs.: Se não for especificada a precisão, ela será de 2 casas decimais # Uso: zzcalcula [--notacao] [--precisao número] número operação número # Ex.: zzcalcula 2,1 / 3,5 # zzcalcula '2^2*(4-1)' # 2 ao quadrado vezes 4 menos 1 # zzcalcula --notacao 100000-26 # zzcalcula --notacao --precisao 20 10000000-26 # ---------------------------------------------------------------------------- zzcalcula(){ zzzz -z $1 zzcalcula && return local num potencia=0 notacao=0 scale=2 casas [ $1 = "--notacao" ] && notacao=1 && shift; [ $1 = "--precisao" ] && scale=$2 && shift && shift; [ "$*" ] && num=`echo "scale=$scale;$*" | sed y/,/./ | bc`; if [ "$notacao" = 1 ]; then while [ `echo "$num<1" | bc` = 1 ]; do potencia=`echo $potencia-1 | bc` num=`echo "scale=60;$num*10" | bc`; done while [ `echo "$num>10" | bc` = 1 ]; do potencia=`echo $potencia+1 | bc` num=`echo "scale=60;$num/10" | bc`; done casas=`echo "$scale+2" | bc` num=`echo "$num" | bc | sed y/./,/ | sed -e "s/\(.\{$casas\}\).*/\1/"` echo "$num x 10^$potencia"; else echo "$num" | sed y/./,/; fi }