Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 19h54   #1
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
Par défaut chiffres significatifs quelque soit la grandeur du nombre

Bonjour,

Je souhaite arrondir un chiffre a un nombre de chiffres significatifs par exemple 3.
par exemple
7845684646684 donne 7850000000000
mais 0,0000005842651 donne 0,000000584
et 42,4896463333333 donne 42,4
ou 4,66666666666667 donne 4,67
Voilà un problème pour vos longues soirées d'hivers
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h03   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
voir les fonctions Fix et Round
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h42   #3
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
Merci pour ta réponse mais cela ne répond pas à mon problème.
En effet, je ne connais pas à l' avance la grandeur du nombre (de type double) je ne sais donc pas si je dois arrondir à +12 ou -18.
Par exemple pour un chiffre 12,48755864 je doit arrondir à 1 ; mais pour un nombre de 78516666,6666666 je doit arrondir à -5.
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h03   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 050
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 050
Points : 1 230
Points : 1 230
bonjour,
une solution est de passée par le Log base 10.
tous les nombres pouvant s'écrire :
x=y*10^n où y est un réel 0<y<10 et n un entier positif ou négatif
log(x)=log(y*10^n)
log(x)=log(y)+n

la partie entière donne la puissance de 10 et la partie décimale le log. En appliquant la fonction inverse du Log Exp, on obtient : 0<Exp(log(y))<10, un nombre y<10, c'est ce nombre que l'on peut arrondir à la précision voulue.

Selon tes données :
Log(7845684646684)=12.89.... => n=12 et Exp(Log(y))=7.845684...
et Round(Exp(Log(y)), 2) = 7.8500000
Log(0,0000005842651)=-6,2333..=> n=-6 et Exp(Log(y))=5.842651
et Round(Exp(Log(y)), 2) = 5.8400000


Bref un code possible : Log en vba correspond à la fonction Ln
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
'precision exprime le nombre de décimales voule
Public Function Round10(x as double, precision as integer) as double
 dim n as int
 dim y as double
 n=Int(Log10(x))
 y=Exp10(Log10(x)-n)
 Round10 = Round(y, precision) * 10 ^ n
End function
 
Public Function Exp10(x as double) as Double
 Exp10=Exp(x * Log(10))
End Function
 
Public function Log10(x as double) as double
 Log10=Log(x)/Log(10)
End function
ce qui renvoie selon tes données
Round10(7845684646684, 2)=7850000000000
Round10(0.0000005842651, 2)=0,000000584
Round10(42.4896463333333, 2)=42,50
Round10(4.66666666666667, 2)=4.67
ilank est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2010, 11h11   #5
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,
je viens de poster ceci
http://www.developpez.net/forums/d10...t/#post5632288


Edit : la solution de ilank est beaucoup plus astucieuse
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 11h40   #6
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
Merci à ClaudeLELOUP et ilank

C'est effectivement une solution sans itération que je recherché.
J'aurais dut penser au mathématique. Ce n'est donc pas forcement pour rien que l'on nous apprend les échelles logarithmiques à l'école !

Encore merci.
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h05.


 
 
 
 
Partenaires

Hébergement Web