Adicionando zero na frente de pequenas casas decimais [duplicado]

0

então, quando estou codificando, estou tentando imprimir a saída 0,12 em vez de 0,12. Aqui está o meu código abaixo

echo -n "What is the total cost? ";
read cents
cost=$(echo "scale =2;$cost_in_cents/100" | bc);
percent=$(echo "scale =2;$percent / 100" | bc);
tip=$(echo "scale =2;$cost*$percent" | bc);
overall_cost=$(echo "scale =2;$cost+$tip" | bc);
average_cost=$(echo "scale =2;$overall_cost/${#GUESTS[@]}" | bc);

a saída novamente me dá a saída correta de 0,12, mas preciso de um zero antes da casa decimal. Obrigado antecipadamente!

    
por user221083 15.03.2017 / 22:34

3 respostas

0

value=$(printf "%3.2f\n" $(echo "scale=2; 12 / 100" | bc))
    
por 15.03.2017 / 22:46
0

Algo parecido com isto:

$ a=$(echo "0.1 + 0.1" | bc) && echo "$a"
.2
$ a=$(printf '0%s\n' "$a") && echo $a
0.2

Alternativa:

$ echo "0.1 0.1" | awk '{printf "%.2f\n", $1 + $2}'
0.20
    
por 15.03.2017 / 22:43
0

Bash tem printf. Você pode fazer algo como printf '%.2f' $cents para imprimi-lo arredondado para duas casas decimais. Se você quiser atribuí-lo a uma variável, use -v ou use a estrutura $() .

    
por 15.03.2017 / 22:50