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

Résolu
cs_Paul73 Messages postés 13 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 21 juin 2006 - 18 déc. 2005 à 16:48
cs_Paul73 Messages postés 13 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 21 juin 2006 - 27 déc. 2005 à 15:28
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

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
27 déc. 2005 à 13:33
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
cs_Paul73 Messages postés 13 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 21 juin 2006
27 déc. 2005 à 15:28
ENFIN ! la formule Label1 = Format$(nbr1, "0.00E+") m'a sauvé !!

Merci encore et bonne année 2006 !!!
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
18 déc. 2005 à 17:30
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.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 déc. 2005 à 18:01
Dim nbr1 As Double

Dim nbr2 As Double



nbr1 = 1.66675675623426E+24

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

MsgBox nbr2


Daniel
0

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

Posez votre question
cs_Paul73 Messages postés 13 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 21 juin 2006
27 déc. 2005 à 12:24
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,
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
27 déc. 2005 à 12:57
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
0
cs_Paul73 Messages postés 13 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 21 juin 2006
27 déc. 2005 à 13:13
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 !!!
0
Rejoignez-nous