Bonjour,
Existe-t-il une fonction pour obtenir la partie entière d'un nombre décimal svp ?
D'avance merci
Bonjour,
Existe-t-il une fonction pour obtenir la partie entière d'un nombre décimal svp ?
D'avance merci
J'ai trouvé ça :
Ca à l'air de marcher...
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $balAmount | awk '{print int($1)}'
Salut,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 x="1.111" echo "${x%%.*}"
Sous Kubuntu 20.04
il semble ne pas en exister qu'une.
Code : Sélectionner tout - Visualiser dans une fenêtre à part LC_NUMERIC=C printf '%0.f\n' 1.111
Bonsoir,
attention, une manière fait un arrondi alors que l'autre se contente de prendre ce qui est à gauche du point et zappe le reste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $ LC_NUMERIC=C printf '%0.f\n' 1.111 1 $ LC_NUMERIC=C printf '%0.f\n' 1.789 2 $ x="1.111"; echo "${x%%.*}" 1 $ x="1.789"; echo "${x%%.*}" 1
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Bonsoir,
Toujours dans la même veine.
J'ai bidouillé ça pour obtenir l'arrondi de la division en question :
Ce n'est pas très propre, peut-on faire mieux svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Monthly_cost=280 Hourly_cost=0.46 LC_NUMERIC=C printf '%0.f\n' $(echo "scale=2; $Monthly_cost / $Hourly_cost" | bc)
Mais surtout, comment récupérer le résultat dans une variable ?
comment récupérer le résultat dans une variable ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ printf --help | grep -- -v
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Voici une fonction pure built-in bash qui permet de diviser un entier par un flottant et retourne l'entier arrondi le plus proche:
exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 divf () { x1=${2#*.}; y1=${2%.*}; x2=$((10**${#x1})); x1=$(((y1*x2)+x1)); x3=$(((($1*x2)%x1)*100)); res=$((($1*x2)/x1)); [ $((x3/x1)) -gt 50 ] && echo $((res+1)) || echo $res }
Je laisse l'exercice pour considérer le premier argument aussi comme un flottant et/ou d'admettre des valeur tel que .45 en lieu et place de 0.45
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ divf 280 0.46 609 $ divf 280 1.46 192 $ divf 280 46 6
Cordialement.
Bonjour,
Peut être plus propre juste avec bc
Ou bien avec dc
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "scale=2; a=$Monthly_cost / $Hourly_cost ; scale=0 ; b=a / 1 ; scale=2 ; if (a-b >= 0.5) b=++b ; b" | bc
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part dc -e '[1+]sa2k' -e "$Monthly_cost $Hourly_cost" -e '/dsb0k1/dlb-_0.5!<ap'
Yep, mais dans ce cas, on retire aussi le echo:
Code : Sélectionner tout - Visualiser dans une fenêtre à part bc <<<"scale=2; a=$Monthly_cost / $Hourly_cost ; scale=0 ; b=a / 1 ; scale=2 ; if (a-b >= 0.5) b=++b ; b"
Cordialement.
J'avais essayé plusieurs combinaisons pour supprimer le echo sans résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part (standard_in) 1: syntax error
J'ai laissé tomber.
Je préfère, et de loin, dc.
le <<< est spécifique bash, le plus standard est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 bc <<_EOF_ scale=2; a=$Monthly_cost / $Hourly_cost ; scale=0 ; b=a / 1 ; scale=2 ; if (a-b >= 0.5) b=++b ; b _EOF_
Cordialement.
Bonjour,
Les 2 propositions fonctionnent correctement ce matin ???
Merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager