Empecher notation scientifique [Résolu]

Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 3 mai 2013 à 14:26 - Dernière réponse :  Utilisateur anonyme - 5 mai 2013 à 22:30
Bonjour

si j'écris
dim x as double 
 x = 1.024
 x = x - 1


j'obtiens x = .024

mais pour
x = 1.0024
x = x -1


j'obtiens
x = 2.39999999999996E-03
comment obtenir
.0024

merci
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
3 mai 2013 à 15:58
3
Merci
Re,

Si le nombre de décimales n'est pas fixe, ne pourrais-tu pas formater selon le nombre maxi de décimales possibles. (8 par exemple)
Ok, ce n'est pas très élégant car tu peux avoir
0.00240000
0.12300000
0.00000056
Mais je ne vois pas, pour l'instant, d'autres moyens...

Cheyenne

Merci cs_cheyenne 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_cheyenne
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
3 mai 2013 à 14:58
0
Merci
Bonjour,

Utiliser Format$(x - 1, "0.0000")

Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
3 mai 2013 à 15:22
0
Merci
Bonjour cheyenne

le problème c'est que je ne sais pas le nombre
de chiffres après le .
j'ai remarqué que si
on a un double
qui commence par 1.00
le resultat de double - 1 est donné avec notation scientifique
Commenter la réponse de cs_ShayW
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
3 mai 2013 à 16:23
0
Merci
merci pour l'idée
il fallait penser
Commenter la réponse de cs_ShayW
3 mai 2013 à 16:24
0
Merci
Bonjour,
empecher notation scientifique

Pourquoi veux-tu empêcher les scientifique de s'exprimer ???

Et si tu fais ça:
Dim x As Double
x = 1.0024
MsgBox Format$(x - 1, "0.###############")
x = 1.00000056
MsgBox Format$(x - 1, "0.###############")


Ce n'est pas le résultat attendu?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
3 mai 2013 à 17:00
0
Merci
Bonjour acive,

Oui, si la précision est de rigueur.
Mais VB6 (comme Excel) nous joue parfois des tours. Comment expliquer ceci :
Dim x As Double
x = 1.0024
MsgBox Format$(x - 1, "0.###############")

le résultat est 0.002400041 !!!!???!!!

J'avais préconisé le formatage avec des 0 plutôt qu'avec #. Ainsi on a un nombre fixe de décimales (contrairement à # qui n'affiche que les décimales utiles). Si les nombres sont affichés dans un FlexGrid ou des labels positionnés verticalement cela permet d'avoir un alignement avec une police à chasse fixe.
Mais l'ami ShayW ne nous a pas indiqué comment étaient affichés les résultats.


Bonne soirée à vous deux,

Cheyenne
Commenter la réponse de cs_cheyenne
4 mai 2013 à 00:25
0
Merci
Bonjour cheyenne,
Moi j'ai 0,0024 c'est bizarre..

on a un nombre fixe de décimales

Oui je comprends le raisonnement.

Et comme toi la tout de suite, je ne vois pas d'autre issue


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
4 mai 2013 à 06:45
0
Merci
Bonjour à tous,
J'ai également bien 0,0024 avec l'exemple donné
Mais cheyenne a peut-être oublié de nous dire que la valeur de sa variable x était elle même le résultat d'un calcul en amont


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
4 mai 2013 à 07:41
0
Merci
Autre expluication plausible :
cheyenne a fait un test depuis Excel et non depuis VB6.
s'il a écrit 1,002400041 dans une cellule Excel formatée en nombre avec 4 décimales, il y aura "vu" 1,0024 (mais Excel gardait bien évidemment la valeur réelle en mémoire).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
4 mai 2013 à 12:31
0
Merci
Bonjour,
Même sous excel j'ai toujours 0,0024 que la valeur de x soit extraite d'une cellule ou non.
Je penche plutôt pour une des réponses de ucfoutu.

Sinon c'est ton processeur qui ne sait pas compter

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
4 mai 2013 à 13:31
0
Merci
Bonjour acive et ucfoutu,

- Sinon c'est ton processeur qui ne sait pas compter
Je serai bien tenté de le croire, mais de manière sporadique, car aujourd'hui avec le même code j'ai un résultat correct. !?! et je n'ai pas la berlue...

- Mais cheyenne a peut-être oublié de nous dire que la valeur de sa variable x était elle même le résultat d'un calcul en amont
Non, ucfoutu, ce n'est pas ma variable, mais celle d'acive et vu le code utilisé dans mon exemple elle n'est pas issue d'un calcul.

- cheyenne a fait un test depuis Excel et non depuis VB6.
Non, hier, je n'avais pas ce test avec Excel mais bien avec VB6, j'ai seulement dit que VB6 (comme Excel) nous joue parfois des tours mais pas en évoquant ce cas précis. Il arrive qu'Excel ne "compte pas juste" avec les doubles voir ici LIEN
Par contre, et par acquis de conscience, je viens juste de faire le test avec Excel en VBA et également dans une feuille avec formules, dans les deux cas le résultat est ok.

Bon week-end,

Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
5 mai 2013 à 10:06
0
Merci
Bonjour à tous

Petite question

Selon le lien donné par Cheyenne quand un nombre
décimal est converti en binaire il y a des risques de ne pas obtenir exactement la meme valeur.
Pourquoi quand on effectue une opération arithmétique avec des réels on obtient une réponse exacte
Commenter la réponse de cs_ShayW
5 mai 2013 à 12:31
0
Merci
Salut shaym,
quand tu dis converti en binaire tu veux dire?:
    Public Function DecBin(ByVal Rt As Integer) As String
        Dim Binaire As String = ""
        Dim Bin As String = ""
        Do
            Application.DoEvents()
            Bin &= CStr(Rt Mod 2)
            Rt = CInt(Int(Rt / 2))
        Loop Until Rt 1 Or Rt 0
        If Rt = 0 Then
            Bin &= "0"
        Else
            Bin &= "1"
        End If
        If Bin.Length < 8 Then
            Do While Bin.Length < 8
                Bin &= "0"
            Loop
        End If
        For Rt = 7 To 0 Step -1
            Binaire &= Bin.ToCharArray(Rt, 1)
        Next
        Return Binaire
    End Function



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
5 mai 2013 à 17:51
0
Merci
Salut Acive
après la plongé je comprend

ma question est plutot général pas un problème
d'algo
j'ai lu quand un nombre réel est representé
avec IEEE754
en faite tu risques d'obtenir un nombre approximatif
comment se fait il si j'écris
dim x as double
dim y as double
dim res as double
x = 1.7
y = 1.3
res = x+y 

pourquoi res = 3 ? et non 2.99999709 approximatif
Commenter la réponse de cs_ShayW
5 mai 2013 à 19:03
0
Merci
Parce que 1.7 + 1.3 = 3
et
1.49999 + 1.49999 = 2.99998 ...
Je ne vois pas... t'as plongé toi ???



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
5 mai 2013 à 21:38
0
Merci
je dois tourner autours du pot
peut etre ici
je me casse trop la tete
Commenter la réponse de cs_ShayW
5 mai 2013 à 22:30
0
Merci
Ils disent bien:
"simple précision étendue (≥ 43 bits, obsolète, implémenté en pratique par la double précision),"


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.