Pour en finir avec mes problemes d' arrondi dans les calculs

Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 21 oct. 2010 à 12:36
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 21 oct. 2010 à 16:27
Bonjour,
J'ai enfin terminé la premiere partie du petit logiciel sur lequel je travaille depuis quelque temps.
Ce logiciel fait des calculs a partir de données entrées et déjà calculées.

Données :
- Toutes les valeurs a entrer ou deja calculées doivent être comprises entre + 100.00 et -100.00 avec affichage des deux decimales apres la virgule.
- Je veux que mes utilisateurs puissent saisir les données chiffrées simplement à partir d'un pavé numerique, et que donc le caractère "." soit interprété comme une virgule.
- Je veux enfin que les calculs effectués ne soient pas arrondis par rapport a une calculatrice.

Pour ce faire j'ai deja fait ceci en prenant pour exemple u calcul fait par les textbox 18, 19 et 20:
- afin que les point soient considérés comme des virgules
Private Sub Text18_KeyPress(KeyAscii As Integer)
   If KeyAscii Asc(".") Then KeyAscii Asc(",")
End Sub

Private Sub Text19_KeyPress(KeyAscii As Integer)
   If KeyAscii Asc(".") Then KeyAscii Asc(",")
End Sub

Private Sub Text20_KeyPress(KeyAscii As Integer)
   If KeyAscii Asc(".") Then KeyAscii Asc(",")
End Sub


ensuite pour illustrer un calcul ou
Text20.Text = (1 - (((Text18.Text) / (Text19.Text)) ^ 2)) * 4
J'ai fait
Text20.Text = Format((((1 - ((CCur(Text18.Text) / CCur(Text19.Text)) ^ 2))) * 4), "0.00")' "0.00" pour les 2 decimales


cependant ma valeur est arrondie par rapport a une calculatrice
pour Text18.text 41.69 et Text19.Text 41.42 j'ai comme resultat :

- avec la calculatrice : -0.2548
- avec le logiciel : -0.26
ce qui ne me convient pas car je voudrais -0.25

Suis dans le vrai avec mes codes ou y a t'il plus simple et plus efficace ??

Je me posais une derniere question : Mon logiciel est un form d'une certaine dimension.
Est il possible, via un bouton par exemple, de faire apparaitre et disparaitre au clic un second form qui viendrait se "coller" juste en dessous du premier (donc de meme largeur)

Merci bien
A voir également:

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 oct. 2010 à 14:53
Salut

Les Currency (comme expliqué dans l'aide) offre la possibilité d'afficher de grand nombre, mais au détriment des décimale.
Ce n'est donc pas le bon choix pour tes conversions.

Consulte le "résumé des types de données" dans l'aide de VB6 pour faire ton choix en fonction des valeurs que tu manipules.
En général, un Single voire un Double est largement suffisant.

Je t'encourage aussi à te renseigner sur les méthodes de codage binaire des chiffres à virgule flottante : tu comprendras vite que :
- Si la partie entière est importante, elle prendra le maximum de place dans le codage, laissant peu de place à la précision de la mantisse.
- A l'inverse, si la partie entière est faible, on à de la place pour la précision de la mantisse.
Ces deux considérations remplissent pleinement les besoins généraux : Quand on a un grand nombre, les virgules n'ont que peu d'intérêt.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 oct. 2010 à 14:54
Salut
j'ai testé
je pense qu'il y a un petit problème au niveau
du séparateur décimal
tout d'abord il est defini dans le système du
windows
par ex j'ai le séparateur décimal .
mais si changes le point en une virgule
7.56 en 7,56 et j'écris val(text20.text) + 4.44
j'ai 11.44 et non 12
le ,56 n'est pas pris dans le calcul tout simplement parce que chez moi le séparateur décimal est un point
pourquoi veux tu forcer à mettre une virgule ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 oct. 2010 à 15:15
selon les nombres données 41.69 et 41.42
j'obtiens -0.05
avec la calculatrice -0.05231868
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
21 oct. 2010 à 15:46
En fait ShayW, je voulais forcer a mettre la virgule juste sur une demande de la hierarchie. Le point me suffit a titre personnel mais en sus j'avais des problèmes de calculs surement dus a cette histoire de separateur decimal defini dans windows mais j'avoue planer un peu la. Je n'ai commencé a toucher a un VB6 qu'il y a 15 jours ....

En de qui concerne les décimales Jack, je sais que je ne depasserai jamais +50.00 et -50.00.
le probleme est que ce logiciel doit effectuer des calculs tout simplement sans arrondi
un peu comme si je disais a mon logiciel de calculer à 6 decimales et ensuite de n'en afficher que 2.

Je ne peux pas tout expliquer sur un forum mais si tu veux savoir le pourquoi du comment, je peux te l'expliquer si tu m'envoie un mp.

Et pour mon histoire de second form a afficher via un command_button, est ce possible ??

merci encore a vous
0

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

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 oct. 2010 à 16:19
je n'ai pas de problème avec les nombres arrondis
j'ai testé avec différents nombres et j'obtiens
comme la calculatrice

A propos d'afficher un autre form
dans l'évenement click du command
form2.visible = true
mais il faudrait préparer le form2
tu as la form1 avec le command
tu cliques sur le command tu vas avoir la form1 et la form2 c'est à toi de decider quel form
afficher form1.visible true ou false form2 true
c'est quoi le logiciel que tu dévellopes ?

bon prog
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 oct. 2010 à 16:27
je n'ai bien lu ce que tu voulais

Je me posais une derniere question : Mon logiciel est un form d'une certaine dimension.
Est il possible, via un bouton par exemple, de faire apparaitre et disparaitre au clic un second form qui viendrait se "coller" juste en dessous du premier (donc de meme largeur)


la form a une taille width et height modifiable
si tu veux que form2 se colle juste en dessous
à quelle hauteur de l'écran ?
la moitié supérieur de l'écran occupé par form1
et en dessous form2 ?
0
Rejoignez-nous