decimal value
次のコマンドを使用してaをaに変換しますtime value
。
echo "1.5" | awk -F'.' '{printf $1 ":" "%.0f", $2 / 100 * 60}'
出力:1:3
awk
出力に末尾のゼロを追加して次のようにするにはどうすればよいですか1:30
?
ベストアンサー1
後ろにゼロを追加することは良いアプローチではないと思います。入力として期待される出力を生成できますが、1.5
他の入力に対する一般的な解決策が必要な場合、この方法は正しく機能しない可能性があります。
より良い方法は、整数部分と小数部分を分割するのではなく、分を使用して/
演算%
子を使用して正しい値を計算することです。時間と分、例えば:
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
負の値を処理するには、次のabs
関数を導入できます。
awk 'function abs(v) {return v < 0 ? -v : v}
{printf "%d:%02d", ($1 * 60 / 60), ($1 * 60 % 60)}' <<< -1.7
# prints -1:42