IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Abandonner Le type Double [Framework 1.1] ?


Sujet :

ASP.NET

  1. #1
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut Abandonner Le type Double [Framework 1.1] ?
    Salut,

    je viens amener un débat sur la table.
    Que pensez-vous du type double ?

    voici le cas qui m'a fait très peur, je vous laisse une petite couche de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Dim tempsplage as double = 0
     
    '--> boucle
    Dim temps1 As Double
    Try
    temps1 = DateDiff(DateInterval.Minute, CDate(de1), CDate(A1)) / 60
    ' dans cet exemple le calcul sera toujours 504/60 --> 8.4
    Catch
    temps1 = 0
    EndTry
    '.
    '.
    '.
    'temps5
     
    Dim tempsTotal As double= temps1 + temps2 + temps3 + temps4 + temps5
    tempsPlage = tempsPlage + tempsTotal
    ' Fin boucle
    
    Mon code ramène en heures des intervalles de date en minutes. Le hic, c'est qu'à la 3ème boucle d'ajout dans la variable tempsplage, je me retrouve avec une imprécision violente alors que mes nombres sont bien ronds à 1 décimale après la virgule.

    en gros tempsplage vaut successivement :
    0
    8.4 (+8.4)
    16.8 (+8.4)
    25.2000000000000003 (+8.4)

    J'ai du mal à me dire qu'une grande imprécision sur du 0 me ramène un 3 quand je suis sûr que j'additionne bien 8.4 tout rond.

    J'ai changé le type double en décimal et là plus de problème. Magie, mon total vaut bien 25.2.

    Qu'en pensez-vous ? et quand utiliser le type double ? ou encore est-ce une particularité du framework 1.1 ? ou encore je sors

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    le pb du type double, c'est que c'est un type flottant...donc, attends toi a des erreurs d'arrondi (d'ou les round et les trunc qui parsèment le code des développeurs VB depuis très longtemps...)

    Pour + d'info :
    http://docs.sun.com/source/806-3568/ncg_goldberg.html

    Si tu dois travailler avec des valeurs pas trop énormes (moins de 7 922 816 251 4264 337 593 543 950 335), utilise des decimal. Ce sera le cas dans 80% de ce que tu fais...

    Le type double, et les autres types flottants, tu en a besoin en général plus pour des équations physiques ou astronomiques, vu qu'en flottant, tu peux aller jusqu'à 1.18973149535723176502e+4932

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    merci pvialatte, je vais essayer de lire ce big doc.

    Résolu d'après le peu que j'en ai lu, Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion de type double en texte
    Par CoachMac dans le forum C
    Réponses: 17
    Dernier message: 14/10/2006, 19h29
  2. [Socket] Send/Recv type double sur architectures différentes
    Par nicolas.pied dans le forum Réseau
    Réponses: 4
    Dernier message: 31/03/2006, 20h33
  3. Variable de type double
    Par Linaa dans le forum C
    Réponses: 16
    Dernier message: 21/01/2006, 13h04
  4. arrondi avec type double
    Par la drogue c'est mal dans le forum MFC
    Réponses: 6
    Dernier message: 08/04/2005, 17h51
  5. [LG]Convertir le type double en string
    Par @tom@ dans le forum Langage
    Réponses: 8
    Dernier message: 18/01/2004, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo