Arrondir au demi-points supérieur

Résolu/Fermé
trauqnej Messages postés 154 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 5 septembre 2022 - 25 oct. 2013 à 18:18
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 27 oct. 2013 à 12:12
Bonjour,
existe-t-il une fonction/commande (style bc (ou autre))
pouvant être plus simple que la partie awk ci-dessous ?

# arrondir au demi-point supérieur
echo "
41.25
16.51
16.50
16.99" | while read valeur ; do
awk '
{unite=(substr($1,1,2))};
{decimal=(substr($1,4,2))};
{if (decimal<=50){decimal=50}};
{if (decimal>50) {decimal=00;unite=unite+1}};
{print unite,decimal}'
done


3 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
Modifié par mamiemando le 27/10/2013 à 01:22
Ça me paraît suspect que chaque instruction soit dans un bloc "{ ... }" dédié.

En effet en awk, chaque bloc est précédé d'une condition (si elle est omise, celle-ci est toujours vrai) et si celle-ci est vrai, le bloc d'instruction écrit dans le bloc "{...}" est déclenché.

Ce que tu peux faire c'est faire un truc de ce genre :

echo "16.7" | awk '{print (int(2 * $1) + 1) / 2}'

Bonne chance
1