J'ai besoin de vos lumières

TiteCheyenne Messages postés 5 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 21 novembre 2004 - 19 nov. 2004 à 22:43
TiteCheyenne Messages postés 5 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 21 novembre 2004 - 21 nov. 2004 à 21:04
Bonjour,

Un truc qui me titille... j'ai besoin de vos lumières et de vos avis
Je cherchais à récupérer des nombres arrondis à 2 chiffres après la virgule.

Dans un premier temps, j'ai écris ceci :
If (nbre * 100) - Int(nbre * 100) >= 0.5 Then
arrondi = (Int(nbre * 100) / 100) + 0.01
Else
arrondi = Int(nbre * 100) / 100
End If

Seulement voilà, quand je lui envoyais par exemple le nombre 25.36, il me renvoyait quelque chose comme 25.3600001...
En fait, j'ai suivi le code et c'est parce que pour lui int(25.36*100)=2535 (pourquoi ? si quelqu'un sait je serai ravie de le savoir !)

Bon, toujours est il, que j'avais des erreurs. Et puis j'ai écrit celui là :

Dim num As Integer
num = nbre * 100

If (nbre * 100) - Int(num) >= 0.5 Then
arrondi = (Int(num) / 100) + 0.01
Else
arrondi = Int(num) / 100
End If

Pour tout dire, il ne rentre jamais dans le if donc je pourrai me contenter de la partie après le "else"...
Mais moi je trouve que c'est trop facile, vu comme ça... et je dois avoir oublié quelque chose quelque part... mais quoi ?

Et bien je compte sur vous pour me le dire.

merci par avance !

11 réponses

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
19 nov. 2004 à 22:58
y'a beaucoup plus simple et reposant pour les neurones

MsgBox Round(25.36, 2) 'ca donne 25.36

Description

Renvoie un nombre arrondi à un nombre spécifié de positions décimales.

Syntaxe

Round(expression [,numdecimalplaces])

La syntaxe de la fonction Round comprend les éléments suivants :

Élément Description
expression Expression numérique arrondie.
numdecimalplaces Facultatif. Nombre indiquant combien de positions à droite de la virgule sont incluses dans le nombre arrondi. Si cette valeur est omise, les entiers sont arrondis par la fonction Round.
0
TiteCheyenne Messages postés 5 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 21 novembre 2004
19 nov. 2004 à 23:05
Merci beaucoup pour ton message, y a juste un hic...
je suis en access 97 pour ce développement et round... et ben il connait pas !
0
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
19 nov. 2004 à 23:15
n = 25.361245454
MsgBox Int(n * 100) / 100
0
TiteCheyenne Messages postés 5 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 21 novembre 2004
19 nov. 2004 à 23:19
D'abord merci de me répondre aussi rapidement, c'est vraiment gentil.
je suis d'accord avec toi pour n=25.361245
le problème est que si tu envois n=25.36 (deux décimales seulement) et bien ça plante sec !
0

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

Posez votre question
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
20 nov. 2004 à 00:12
Salut TiteCheyenne,

essaie un truc du genre :
Format(TaDonnee, "0.00")

testé ok sur VB.NET avec TaDonnee au format Decimal

le format 0.00 impose 2 décimales quelque soit la valeur de TaDonnee ==> 155.3 affichera 155.30

Si tu veux ne pas forcer le nb de décimal tu remplaces 0 par #
> Format(TaDonnee, "0.##")

Tiens nous au courant

Guich
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 nov. 2004 à 00:29
Dim num As Integer
Dim i As Double
Dim x As Double
Dim arrondi As Double

i = 2.005 - 2

x = 25.345

num = x * 100
If (x * 100 - num) >= i Then
arrondi = num / 100 + 0.01
Else
arrondi = num / 100
End If
MsgBox arrondi
0
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
20 nov. 2004 à 00:34
... et bien ça plante sec !

Doucement les ! ça agresse.

as tu essayé ?
et quel est le message d'erreur ?

parce que je ne vois pas pourquoi,
faire l'operation mathematique suivante plante :

25.36 * 100 = 2536

int 2536 = 2536

2536 / 100 = 25.36

????

meme ma calculette elle le fait
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 nov. 2004 à 01:19
je sais pas si ça plante mais quand je fais:
i = (2.005 - 2) * 100

je n'ai pas 0.5 mais 0.499999999999989

ce qui est dû à la façon dont sont stockés les nombres à virgule flottante.
cette valeur est encore trop grande.

avec i = (2.00005 - 2) * 10000 qui donne 0.499999999998835 j'arrive à passer dans le if

sinon Format(x,"0.00") à l'air de bien marcher.

Daniel
0
TiteCheyenne Messages postés 5 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 21 novembre 2004
20 nov. 2004 à 08:56
Oui, je sais bien que la calculatrice le fait très bien...,d'où mon étonnement quand je fais tourner mon code et que je me retrouve avec 2535... Et je suppose que l'explication de Daniel est correcte à ce sujet (stockage des données)

Pour ce qui est de la méthode format, le problème c'est que je ne veux pas seulement "voir un nombre à deux décimales" mais que je veux conserver un nombre à deux décimales, parce que après je faits plusieurs calculs ...

Merci à vous tous, vous êtes formidables

Bonne journée
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
20 nov. 2004 à 11:05
Y'a Format :

utilise comme ceci :

Data=format(Data,"# ##0.00")

ça te renvéra forcément un nombre à deux décimale.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
TiteCheyenne Messages postés 5 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 21 novembre 2004
21 nov. 2004 à 21:04
Merci à tous pour vos bons conseils,

Ca marche ! Toutefois je reste perplexe quand je fais une somme dans une requête...
0
Rejoignez-nous