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 :D

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

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