Page 1 sur 1
[R] Arrondi au plus proche
Posté : mer. 19 janv. 2011 18:49
par milka
Bonjour, connaissant la fonction Floor pour arrondir à l'entier inferieur et Ceiling pour arrondir à l'entier supérieur, je me demandait si il n'existait pas de fonction pour arrondir à l'entier le plus proche.
Merci d'avance

milka
Re: [..] Arrondi au plus proche
Posté : mer. 19 janv. 2011 18:56
par jbnh
C'est justement la fonction de floor et ceiling ... ?
Re: [..] Arrondi au plus proche
Posté : mer. 19 janv. 2011 19:45
par milka
Mais justement, je cherche une fonction qui arrondit au nombre le plus proche

Par exemple, 5.8 devient 6 et 5.4 devient , avec la meme fonction
Re: [..] Arrondi au plus proche
Posté : mer. 19 janv. 2011 20:21
par bloodwolff
Hummm
round ?
[optional] Number indicating how many places to the right of the decimal are included in the rounding. If omitted, Round returns an integer.
Re: [..] Arrondi au plus proche
Posté : mer. 19 janv. 2011 20:45
par milka
C'est exactement de ça que j'avais besoin

Merci beaucoup

Re: [R] Arrondi au plus proche
Posté : mer. 19 janv. 2011 22:24
par jchd
... et nous sommes bien chanceux que l'implémentation de Round() dans AutoIt n'ait pas les inconvénients de l'équivalent dans bien des langages :
ConsoleWrite(Round(3.05, 1) & @LF)
3.1
Ouf ! <-- sans rire !
Re: [R] Arrondi au plus proche
Posté : dim. 24 avr. 2011 17:16
par Nemo85
Bonjour,
oui très pratique cette fonction, mais est-ce possible de forcer en l'arrondi supérieure ex : 694.574 doit devenir 694.58
Merci, bàv
Nemo
Re: [R] Arrondi au plus proche
Posté : dim. 24 avr. 2011 18:14
par overflow
Nemo85 a écrit :Bonjour,
oui très pratique cette fonction, mais est-ce possible de forcer en l'arrondi supérieure ex : 694.574 doit devenir 694.58
Merci, bàv
Nemo
il te faudra ecrire une fonction je crois car au niveau des math arrondire te donnera la valeur la plus pres
donc la pour 694.574 ca donneras 694.57
Posté : dim. 24 avr. 2011 18:45
par milka
C'est un peu barbare, mais :
► Afficher le texte
Code : Tout sélectionner
$nbr = 694.574
$nombredechiffresapreslavirgule = 2
Msgbox(0,"Arrondi",Round($nbr*10^$nombredechiffresapreslavirgule)/10^$nombredechiffresapreslavirgule)
Re: [R] Arrondi au plus proche
Posté : dim. 24 avr. 2011 19:05
par Nemo85
Merci, je vais creuser dans ce sens
c'est vrai que le Round arrondi ce qui est inférieur à 5 à l'unité inférieure et ce qui est = ou > 5 à l'unité supérieure. Ce que je dois faire c'est que tout passe à l'unité supérieure que ce soit 0.001 ou 0.009 ca doit faire 0.01 (toujours deux décimales)
Nemo85 a écrit : 694.574 doit devenir 694.58
Je ne capte pas bien ton code, il fait pareil que round : 694.574 => 694.57 et 694.575 => 694.58
bàv,
Nemo
Re: [R] Arrondi au plus proche
Posté : dim. 24 avr. 2011 19:11
par overflow
hé hé j aime ces post a rallonge ou chaqu un fait sa soupe ^^
Alors voici ma version au legumes de chez moi !!!!
lol
Code : Tout sélectionner
MsgBox(0,"",ArrondiSup(InputBox("","Nombre a virgule")))
Func ArrondiSup($arg)
Local $2E=False,$Float="",$Entier=""
If $arg=0 Then
MsgBox(0,"","0 / 0 = Tete a toto !!")
Return
ElseIf Round($arg)/$arg=1 Then
MsgBox(0,"","Ce n est pas un Nombre a virgule")
Return
EndIf
$arg=StringToBinary($arg)
For $x=3 to StringLen($arg) step 2
If $2E Then $Float &=StringMid($arg,$x,2)
If Not $2E And StringMid($arg,$x,2)<>"2E" Then $Entier &=StringMid($arg,$x,2)
If StringMid($arg,$x,2)="2E" Then $2E=True
Next
If StringLen($Float)=2 Then
Return Ceiling(BinaryToString("0x" &$Entier& "2E31"))
Else
$Modif=BinaryToString("0x" &$Entier) & "." & Ceiling(BinaryToString("0x"& StringLeft($Float,StringLen($Float)-2) & "2E" & StringRight($Float,2)))
Return $Modif
EndIf
EndFunc
Re: [R] Arrondi au plus proche
Posté : dim. 24 avr. 2011 20:30
par Nemo85
le potage est excellent !
j'ai de quoi dîner merci,
bàv,
Nemo
Re: [R] Arrondi au plus proche
Posté : dim. 24 avr. 2011 20:50
par bloodwolff
Code : Tout sélectionner
Func decimalsup($nombre, $decimal)
Return Ceiling($nombre*10^$decimal)/10^$decimal
EndFunc