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
}
[^] # Re: pas trop
Posté par deadbeef . En réponse au message Calcul arrondi en shell. Évalué à 3.
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