• [^] # Re: pas trop

    Posté par . En réponse au message Calcul arrondi en shell. Évalué à 3.

    C'est marrant, j'avais pas du tout compris la question comme toi... Je l'avais comprise comme étant la recherche d'un arrondi au millier supérieur ou inférieur... probablement à cause des exemples.

    Si c'est un arrondi tel que seuls des 0 peuvent suivre le premier digit, pas la peine d'utiliser des log10 (heureusement parce que bonne chance en bash), ça reste trivial:


    #!/bin/bash
    function rounda {
    if [[ ${1:1:1} == "" ]] ; then
    echo "1ドル"
    else
    if [ ${1:1:1} -gt 5 ] ; then
    first=$(( ${1:0:1} + 1 ))
    else
    first=${1:0:1}
    fi
    echo -n $first
    l="`echo 1ドル | wc -c`"
    for i in `seq 2 $(($l-1))`; do echo -n "0" ; done
    fi
    }

    echo 424242 = `rounda 424242`
    echo 128 = `rounda 128`
    echo 11 = `rounda 11`


    résultat:

    424242 = 400000
    1985 = 2000
    128 = 100
    11 = 10