Arrondir à l entier

Résolu
spike62300 Messages postés 73 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 14 septembre 2007 - 25 janv. 2005 à 08:02
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 25 janv. 2005 à 11:01
Bonjour a tous,

je suis sous vb.net et je chercher une solution pour arrondir certains calculs que j'execute.
Je souhaite arrondir à l'entier 0, je m'explique:

1952 donne: 1950
13857 donne: 18860

comment faire?

merci d'avance

spike

12 réponses

madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
25 janv. 2005 à 08:50
Tu t'écris ta propre fonction ...

soit traitement de chaine de caractère : un string qui récupère le nombre

tu traites le dernier caractère (correspond à un entier)

tu l'évalues

tu surcharge ta string

tu renvois le long


Sinon si t'es plus matheux

Tu peux écrire une fonction récursive avec l'usage de modulo, qui recherche l'unité et qui fait

NBarrondi = nombre - unité et qui te retourne le nouveau nombre



Il n'y a pas de limite à la créativité

Amuses toi bien
madbob
3
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
25 janv. 2005 à 09:15
Tiens un exemple en vba...




Function PB_CALC(byval P_Nombre as Long)


dim L_New as string


Dim L_Res As Long




'* je récupère le nombre sous forme de chaine inversée - l'unité que je remplace par 0


L_new = 0 & Mid(StrReverse(P_Nombre), 2)




'* je remets la chaine à l'endoit et je l'affecte à un nombre


L_Res = StrReverse(L_new)




'* je renvois la nouvelle valeur


PB_CALC = L_Res






End Sub


madbob
3
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
25 janv. 2005 à 09:15
Ben ce que tu peux faire c'est faire une fonction qui récupère le dernier chiffre

style
Function arrondir(nombre As String) As Long
DernChiffre = Mid(nombre, Len(nombre))
End Function

Ensuite tu vérifies si le DernChiffre < 5 tu remplaces par 0
exemple si dernier chiffre = 4 alors je le remplace par0
Sinon si le dernier chiffre > 5 ben tu augmentes le nombre des dizaines de 1 par exemple aprés c'est à toi de voir la méthode à traité dans les conditions

PS : je suis à vb6
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 janv. 2005 à 10:19
bien plus simple:
Dim N As Integer
N = 1952
N = (N \ 10) * 10
MsgBox N

Daniel
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
25 janv. 2005 à 10:56
Gobillot, c'est etonnant mais la seule reponse qui me semble valable est la seule qui ne soit pas acceptee...



il faudrais quand meme la modifiee un peu



Dim N As Integer

N = 1957

N = ((N + 5) \ 10) * 10 ' ###5 ou plus, donne la dizaine supperieure

MsgBox N
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 janv. 2005 à 11:01
heu oui j'avais pas vu qu'il fallait arrondir !

Daniel
3
spike62300 Messages postés 73 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 14 septembre 2007
25 janv. 2005 à 08:56
jvois a peu pres ske tu veux dire mais tu n'as pas un exemple pour que je comprenne mieux?

Merci d'avance

spike
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
25 janv. 2005 à 09:33
L'exemple que je t'ai donné sert à exécuter ta question cad arrondir à l'entier 0...




Je souhaite arrondir à l'entier 0, je m'explique:




1952 donne: 1950


13857 donne: 18860






Spike t'es mignon mais si ta question change toutes les 2 minutes tu n'y arrivera pas. D'autre part je ne suis pas une girouette.



Avec l'exemple que je t'ai donné et un poil d'imagination tu peux
absolument arriver à traiter tous les cas de figure... Fait transpirer
un peu tes neurones tu verras c'est pas si dur.



Ce code marche parfaitement sur VB6. (juste faut mettre un end function et non un end sub)




madbob
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
25 janv. 2005 à 09:37
Excuse moi spike j'ai pas vu la greffe sur ton poste le message
précédent s'adresse à talking et est un schouia en dehors du context


madbob
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
25 janv. 2005 à 09:39
Et je suis pas réveillé non plus talking

complètement mad le bob
Tiens un ptit kfé pour me faire pardonné ?
madbob
0
spike62300 Messages postés 73 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 14 septembre 2007
25 janv. 2005 à 09:43
Oui ok merci pour vos deux explications:

celle de talking j'ai compris mais par contre madbob j'ai essayé la tienne sans vraiment comprendre ca marche sauf qu'il faut que je mette:
L_Res=StrReverse(L_new) & 0

Merci encore pour votre aide

spike
0
spike62300 Messages postés 73 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 14 septembre 2007
25 janv. 2005 à 09:58
Nan tinkiet c bon ^^

Jvais faire fonctionner mes neuronnes comme tu dit

spike
0