Eu não acho que adicionar um 0 à direita seja uma boa abordagem.
Pode produzir a saída pretendida para o 1.5
como entrada,
mas se você precisar de uma solução geral para outras entradas,
essa abordagem provavelmente não funcionará bem.
Uma abordagem melhor é não dividir a parte inteira e as partes decimais,
mas trabalhar com minutos, usando os operadores /
e %
para calcular as horas e minutos corretos, por exemplo:
awk '{printf "%d:%02d", ($1 * 60 / 60), ($1 * 60 % 60)}' <<< 1.5
# prints 1:30
awk '{printf "%d:%02d", ($1 * 60 / 60), ($1 * 60 % 60)}' <<< 1.50
# prints 1:30
awk '{printf "%d:%02d", ($1 * 60 / 60), ($1 * 60 % 60)}' <<< 1.7
# prints 1:42
awk '{printf "%d:%02d", ($1 * 60 / 60), ($1 * 60 % 60)}' <<< 1.05
# prints 1:03
Para lidar com valores negativos,
você pode introduzir uma função abs
:
awk 'function abs(v) {return v < 0 ? -v : v}
{printf "%d:%02d", ($1 * 60 / 60), ($1 * 60 % 60)}' <<< -1.7
# prints -1:42