Arrondi et fonction round

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Arrondi et fonction round

Messagepar Serge Rapenne » 12 Juin 2008, 15:04

Bonjour à tous,

j'ai un petit problème avec les arrondis de la fonction round.
L'aide de cette fonction indique que les arrondis respectent la norme IEC 60559 qui prévoit que l'arrondi soit à la valeur de décimale paire la plus proche donc round (3.5,digits=0) donne 4 tout comme round(4.5,digits=0).
Mais je dois effectuer des calculs selon une règle qui spécifie que arrondi(3.5)=4 et arrondi(4.5)=5. Connaissez vous un équivalent de round qui respecte cette règle ou voyez vous une manière de coder cela.

Merci d'avance pour toute suggestion

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 12 Juin 2008, 15:26

bonjour,

> ?round
> ceiling(4.5)
[1] 5
> ceiling(3.5)
[1] 4
>

@+

pierre
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Oui mais non

Messagepar Serge Rapenne » 12 Juin 2008, 15:35

Merci de ton post mais il semble que je n'ai pas été assez clair !
Mon problème est uniquement pour les valeurs avec des décimales finissant par 5.
Je dois avoir arrondi(4.4)=4 et arrondi(4.6)=5 comme le fait round() mais arrondi(3.5)=5 et c'est là que le bas blesse.

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 12 Juin 2008, 16:12

rebonjour,



Je dois avoir arrondi(4.4)=4 et arrondi(4.6)=5 comme le fait round() mais arrondi(3.5)=5 et c'est là que le bas blesse.


désolé, je ne comprend pas :')
c'est pas pluôt "arrondi(3.5)=4" ?

voci peut-être une piste

Code : Tout sélectionner

> arrondi <- function (x) ifelse(x-trunc(x)>=0.5,trunc(x)+1,trunc(x))
> arrondi(4.5)
[1] 5
> arrondi(4.4)
[1] 4
> arrondi(4.6)
[1] 5
> arrondi(3.5)
[1] 4
> arrondi(3.4)
[1] 3
> arrondi(3.6)
[1] 4
>




en espérant avoir aidé

pierre
=@===--------¬-------¬------¬-----¬

liens utiles :

http://www.gnurou.org/Writing/SmartQuestionsFr

http://neogrifter.free.fr/welcomeOnInternet.jpg

]<((((*< -------------------------------

Olivier Delaigue
Messages : 220
Enregistré le : 05 Déc 2006, 07:38

Messagepar Olivier Delaigue » 12 Juin 2008, 16:12

En effet, ce n'est pas très clair :-)
arrondi(3.5) = 4 ou 5 ?

Code : Tout sélectionner

> (x <- seq(3, 5, by = 0.1))
 [1] 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0
> ifelse(x == 3.5, 5, round(x, dig = 0))
 [1] 3 3 3 3 3 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Oups

Messagepar Serge Rapenne » 13 Juin 2008, 07:09

Désolé, je suis effectivement de plus en plus obscure. C'est effectivement arrondi(3.5)=4.
Merci pour vos efforts et toutes mes excuses (je retire mes moufles)
Pierre, Merci pour ta proposition, je regarde ca.

Merci encore


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité