begin process at 2012 02 14 19:35:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Algorithme

 > 

Maths

 > 

pb de mul. avec d nbre single


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb de mul. avec d nbre single

mercredi 20 septembre 2006 à 20:01:00 | pb de mul. avec d nbre single

flagyg

Bonsoir!!
Voilà je codais tranquillement mon code quand tout à coup quelque chose de trés fâcheux s'est produit :

T est une variable de type single qui vaut 0.00082 au moment ou je teste. J est 1 variable long mais c'est pas important.
Voilà mon code

    Do
        If T <= 10 And T >= 1 Then Exit Do 'quand T est entre 1 et 10, on quitte
       
        If Nombre > 10 Then
            T = T / G
            J = J + 1
        ElseIf Nombre < 10 Then
            J = J - 1
            T = T * G
        End If
   
        DoEvents
    Loop

La multiplication par 10 se fait bien, une, deux .. mais hop à la troisième multiplication voila que T est égal non pas à 0.82 mais à 0.8200001 !!!!! C'est quoi Ca ??? lol on dirait comme des registres  pas remis à  0.. j ai essayé de mettre le nombre "10" en constant single histoire de tout initialiser mais non, rien à faire.. savez-vous d'ou ca provient? PS: au cas ou, je n ai pas de service pack ..
Merci infiniment de votre réponse!! elle me sera trés précieuse parce que là vraiment il y a quelque chose qui m'échappe!!!


mercredi 20 septembre 2006 à 20:54:25 | Re : pb de mul. avec d nbre single

mortalino

Membre Club


Salut,

ta variable ne doit pas être en Single, mais de type double.
De plus, je t'ai fait une simplification de ton code :

Private Sub Form_Load()
Dim T       As Double  ' en Double, pas en Single
Dim Nombre  As Long
Dim J       As Long
Dim G       As Long

T = 0.00082
Nombre = 5
G = 10

    Do
        Select Case T
            Case 1 To 10: Exit Do
            Case Else: If Nombre > 10 Then T = T / G: J = J + 1 _
                Else J = J - 1: T = T * G
        End Select
        'DoEvents
    Loop
End Sub


@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
mercredi 20 septembre 2006 à 21:01:19 | Re : pb de mul. avec d nbre single

Dolphin Boy

Membre Club
Salut, je crois que ça vient de l'incertitude dans la précision de ce genre de type de donnée en VB6.
Avec single, elle se situe entre
-1,401298E-45 et 1,401298E-45.
Avec Double, elle se situe entre
-4,94065645841247E-324 et 4,94065645841247E-324
Dans ton cas, choisis le type Double pour ta variable T et ça devrait le faire (précision imparfaite aussi mais suffisante pour tes calculs je pense)
mercredi 20 septembre 2006 à 21:02:29 | Re : pb de mul. avec d nbre single

casy

Membre Club
Mortalino, ça apporte quoi de passer la variable en Double ????


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #
mercredi 20 septembre 2006 à 21:16:51 | Re : pb de mul. avec d nbre single

mortalino

Membre Club


Casy : d'avoir le résultat voulu !! 
J'ai testé ça façon, et effectivement le résultat est comme il a dit, avec la variable en Double, le résultat est correct.

J'ai regardé, des erreurs se produisent si le nombre, de type Single, est compris entre -1,4 et 1,4.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
mercredi 20 septembre 2006 à 21:20:19 | Re : pb de mul. avec d nbre single

mortalino

Membre Club



Beh té, tant que je suis dessus, autant en faire profiter notre ami flagyg :

Type de données Taille d'enregistrement Plage
Byte 1 octet 0 à 255
Boolean 2 octets True ou False
Integer 2 octets -32 768 à 32 767
Long
(entier long)
4 octets -2 147 483 648 à 2 147 483 647
Single
(à virgule flottante en simple précision)
4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives
Double
(à virgule flottante en double précision)
8 octets -1,79769313486231E308 à
-4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives
Currency
(entier à décalage)
8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
mercredi 20 septembre 2006 à 21:45:17 | Re : pb de mul. avec d nbre single

flagyg

Ah oui!!!! Merci beaucoup pour ces réponses!!!! comme quoi on en apprends tout les jours..j' avais jamais remarqué que faire une multiplication par 10 entrainait une imprécision..j'avais toujours obtenu un nombre exact. Bon je n'ai pas l'habitude d'utiliser des nombres à virgules.. ben merci beaucoup..Mais plutôt que d'utiliser un double, je vais plutôt remplacer le "égal" par une soustraction et une comparaison avec + ou- 0 ..Merci beaucoup en tout cas!!!Vive ce site extra et ses utilisateurs qui le sont tout autant!
jeudi 21 septembre 2006 à 10:47:34 | Re : pb de mul. avec d nbre single

Renfield

Administrateur CodeS-SourceS

ok avec le typage en Double...
pour la simplification et sécurisation du code, mieux vaut :

    If G <> 0 And Nombre <> 10 Then
        Do Until T <= 10 And T >= 1
            If Nombre > 10 Then
                T = T / G
            Else
                T = T * G
            End If
        Loop
    End If

Renfield
Admin CodeS-SourceS- MVP Visual Basic


Cette discussion est classée dans : pb, nombre, single, nbre, mul


Répondre à ce message

Sujets en rapport avec ce message

MATH Nbre aléatoire avec cos???? [ par wico2002 ] Bonjour Je ne me souvient plus comment de servir de math.cos et je dois générer un nombre aléatoire entre 0 et 90, de valeur positive. Voila ce qu pb avec inet_ntoad de winsock [ par xerque ] Bonjour,J'ai un pb avec inet_ntoad(nombre as long ). Cette fonction permet de changer un long en adresse IP lisible. Cependant si mon nombre dépasse l Pb Excel... somme si nombre en gras [ par BosB ] J'ai un tableau avec des montant et je veux additionner que ceux qui sont en gras!!!!Est-ce possible sans faire de macro?????Merci je suis bloquer Pb pour compter le nombre d'enregistrements [ par damiendu56 ] Encore une tite question lol ...... Je veux compter le nombre denregistrements de mon RecordSet, mais seulement ca marche pa quan jutilise : rst.Recor base de donnée et vb [ par jakoum ] sos : j'ai un pb  : j'ai developpé une application de gestion de personnel mais j'ai rencontré un tt petit pb , celui du nombre de chiffre apres la vi Nombre dynamique de boutons - Pb de clic [ par capuccino_fr ] J'ai un fichier ini qui contient des references a des applicaitons (nom, chemin et icone). Je genere mon formulaire avec le nombre necessaire de bouto pb avec heures [ par dodo1309 ] BonjourVoila j'ai un petit problème avec excelje dois comptabilisé le nombre d'heure fais par un employé sur un mois. Donc j'ai une colone qui contien pb de variable [ par flashover40 ] slt , voila mon souci, je souhaite créer une variable qui incrémentera la ligne du meme nombre . Je c pas comment faire pour que le nombre de la varia Pb converson heure du type hh:mm:ss en nombre [ par bimone78 ] Bonjour, j'ai un petit soucis pour convertir une heure par exemple 146:28:32 en nombre car quand je copie cette valeur ds excel. Il y a marqué 02:28:3 compter un nombre d'enregistrements dans une table [ par Morgoth666 ] Voici mon code, je cherche a inscrire dans une textbox lorsue je click sur un bouton le nombre de personnes ayant moins de 20 ans. Dans ma table j'ai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,224 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales