Bonsoir,
J'ai une simple question concernant le logiciel AlgoBox :
Je souhaitais savoir quelle formule faut-il entrer afin de pouvoir arrondir au centième ?
J'ai beau eu me creuser la tête et chercher partout des informations mais le peu trouvé ne m'a emmené nul part.
Je suis bloquer à ce niveau là : 3.6*D/TALGOBOX_ARRONDIR(,)
Sachant que 3,6*D/T concerne mes calculs et (,) là où je dois saisir la formule
Si je ne suis pas clair faites le moi savoir, cordialement.
Bonjour
de toute façon ton "TALGOBOX_.." c'est du n'importe quoi
pour appliquer une fonction sur le résultat d'un calcul on ne "colle" pas la fonction à la suite du calcul ainsi.
on écrit
fonction(calcul)
donc ici ce sera
fonction_arrondir(3.6*D/T)
reste à trouver cette fameuse fonction arrondir qui s'avère en fait ne pas exister officiellement
pour arrondir à 1/10n près, par exemple à 1/10, on peut utiliser le calcul suivant
round(expression*10)/10
"expression" représentant n'importe quelle expression dont on veut arrondir le résultat au 1/10
donc ici round(36*D/T)/10 (la multiplication par 10 est ici faite à la main en remplaçant le 3.6 par 36)
la fonction (round) est documentée dans la doc en ligne d'Algobox (menu Aide) elle arrondit son argument à l'entier le plus proche
ceci a en réalité des effets indésirables car 1/10 n'est pas un nombre binaire (une infinité de chiffres binaires après la virgule)
il se peut donc que cette méthode soit mise parfois en défaut (précision des calculs binaires internes limitée)
pour afficher toujours un vrai arrondi au 1/10 quoi qu'il se passe, il n'y a qu'une seule méthode fiable, mais affreuse : transformer le nombre en chaine de caractère et extraire des sous chaines pour obtenir un résultat garanti.
c'est à mon avis un marteau pilon pour écraser une mouche
la formule que j'ai donnée au dessus suffit dans 99.999 % des cas.
Tout d'abord merci de ta réponse mathafou,
Pour ce qui est de 3.6*D/T c'est tout simplement ma formule et ALGOBOX_ARRONDIR(,) c'est la commande proposée par AlgoBox.
Ensuite je n'ai pas tout à fait compris "transformer le nombre en chaine de caractère et extraire des sous chaines pour obtenir un résultat garanti." mais c'est surement car je manque cruellement d'expérience dans le domaine de l'informatique...
J'ai donc essayé round(36*D/T)/10 comme tu m'as indiqué, qui fonctionne, mais je n'ai pas d'arrondi :x
Désolé pour le second poste mais j'ai réussi avec la formule ROUND((3.6*D/T)*100)/100 comme tu m'avais indiqué mais j'avais mal compris sur le coup :')
Cordialement et bonne soirée
ALGOBOX_ARRONDIR(,) n'est pas documentée dans la doc en ligne de Algobox, ni même dans le manuel du site officiel d'Algobox
il y a effectivement comme ça quelques fonctions "secrètes" réservée à l'usage des seuls initiés ( = des concepteurs d'Algobox)
de toute façon elle s'utiliserait ainsi, forcément, de même que TOUTES les fonctions de Algobox
ALGOBOX_ARRONDIR( expression à arrondir , autres paramètres)
tu peux essayer ALGOBOX_ARRONDIR( 3.6*D/T , 1/10) qui sait
ou d'autres variantes
ma méthode marche par contre (je l'utilise plein de fois dans mes propres programmes)
un programme de test :
1 VARIABLES
2 D EST_DU_TYPE NOMBRE
3 T EST_DU_TYPE NOMBRE
4 R EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6 LIRE D
7 LIRE T
8 R PREND_LA_VALEUR round(36*D/T)/10
9 AFFICHER R
10 FIN_ALGORITHME
***Algorithme lancé***
Entrer D : 3
Entrer T : 7
1.5
***Algorithme terminé***
il affiche bien l'arrondi au 1/10 et pas 1.5428571428...
pour arrondir au 1/100 tu remplaces 10 par 100 :
8 R PREND_LA_VALEUR round(360*D/T)/100
tout le reste inchangé
***Algorithme lancé***
Entrer D : 3
Entrer T : 7
1.54
***Algorithme terminé***
l'arrondi au 1/1000 ici (avec ces valeurs, la flemme d'en tester / calculer d'autres) par
8 R PREND_LA_VALEUR round(3600*D/T)/1000
donne bien un arrondi (et pas une simple troncature 1.542) :
***Algorithme lancé***
Entrer D : 3
Entrer T : 7
1.543
***Algorithme terminé***
le "coup des chaines de caractères" est à ignorer (c'est bien trop compliqué pour une amélioration microscopique)
c'était juste pour mentionner que parfois (rarement en fait), la méthode simple avec round() affiche son arrondi au 1/10 sous la forme
xxx.y9999999999
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :