Arrondi scientifique en VB --> Impossible ??? Aidez-moi !!!

[Résolu]
Signaler
Messages postés
13
Date d'inscription
lundi 19 septembre 2005
Statut
Membre
Dernière intervention
21 juin 2006
-
Messages postés
13
Date d'inscription
lundi 19 septembre 2005
Statut
Membre
Dernière intervention
21 juin 2006
-
Bonjour à tous !

Je développe actuelle ment un programe, appelé Impact Calculator, en lien avec le CNRS, le CNES, l'Ecole Normale Supérieure.
Ce programme calcule les effets d'un impact météoritque dont l'utilisateur donne les principales caractéristiques.

Voici mon problème : j'obtiens des nombres du type : 1,6667567562342564 E+24 et je n'arrive pas à les arrondir comme ceci : 1,67 E+24. En effet, il ne s'agit de nombres non décimaux, mais très grands. Comment faire ? La fonction "format" ne fonctionne pas. Dois-je définir mes variables autrement ???

Merci d'avance pour votre aide !!!

Cordialement,

Paul

7 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
j'ai pas ce problème,

étant donné que "3.20E+1" est seulement une chaîne, donc du texte, il n'y a pas de paramètres particuliers à appliquer au Label.





la réprésentation du nombre et le nombre lui même sont 2 choses différentes.

en interne le nombre est en binaire, et en flottant il est formé d'une mantisse et d'un exposant.

mais le Label "s'en fout" que ça représente un nombre ou pas.



Dim nbr1 As Double



nbr1 = 32



' pour arrondir le nombre si nécessaire (c'est pas le cas ici)

nbr1 = Format$(nbr1, "0.00E+")



' pour afficher le nombre dans le Format souhaité

Label1 = Format$(nbr1, "0.00E+")




Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
13
Date d'inscription
lundi 19 septembre 2005
Statut
Membre
Dernière intervention
21 juin 2006

ENFIN ! la formule Label1 = Format$(nbr1, "0.00E+") m'a sauvé !!

Merci encore et bonne année 2006 !!!
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Bonsoir,

Essaye ceci.



Private Sub Command1_Click()

MsgBox Mid$("1,6667567562342564 E+24", 1, 4) & _

Right("1,6667567562342564 E+24", 5)

End Sub



jpleroisse



Si une réponse vous convient, cliquez réponse Acceptée.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
Dim nbr1 As Double

Dim nbr2 As Double



nbr1 = 1.66675675623426E+24

nbr2 = Format$(nbr1, "0.00E+")

MsgBox nbr2


Daniel
Messages postés
13
Date d'inscription
lundi 19 septembre 2005
Statut
Membre
Dernière intervention
21 juin 2006

Merci de vos réponses très intéressantes. Cependant, mon problème persiste à certains moments : en effet, les nombres que j'obtiens peuvent très bien être "1,6667567562342564 E+24" ou 123445453,55544 ou 32 ou 98765434567654,5

Les formules proposées ne fonctionnent pas dans les autres cas. Existe-t-il une formule qui fonctionne avec tout nombre a, pour avoir une écriture du type

c,bbb E+r avec :

0<c<1
r entier et r>0

Merci de votre aide, en tous les cas de la pub sera faite pour votre site !!!

Cordialement,
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
question d'affichage après arrondi ou pas.

MsgBox Format$(nbr2, "0.00E+")


voila ce que j'obtiens:



nbr1 = 1.66675675623426E+24 --> 1.67E+24

nbr1 = 123445453.55544 --> 1.23E+8

nbr1 =
32
--> 3.20E+1

nbr1 = 98765434567654.5 --> 9.88E+13




Daniel
Messages postés
13
Date d'inscription
lundi 19 septembre 2005
Statut
Membre
Dernière intervention
21 juin 2006

Après vérification, je m'aperçois, Daniel, que vous avez raison. Cependant, permettez moi de vous dire que cela ne marche QUE pour les MsgBox. En vérifiant avec une Label, je vois que cela ne fonctionne toujours pas. Comment faire pour que je résultat obtenu dans la MsgBox soit le même que celui obtenu dans la label ?

En gros, quels paramètres dois-je appliquer à la Label ?

Exemple

nbr1 = 32 --> 3.20E+1 (msg box) --> 32 (label)


Grand merci pour votre réponse en tous les cas !!!