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

VB.NET Discussion :

Problème de déclaration? [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut Problème de déclaration?
    Bonjour à tous,

    Je fais face à un problème surprenant...

    je calcule une médiane de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    If (tableau_density.Length - 1) Mod 2 <> 0 Then ' nombre d'élément impair
     
                    MsgBox("Median = " & tableau_density(((tableau_density.Length + 1) / 2) - 1).ToString)
                Else 'nombre d'élément pair 
     
                    Dim num1 As Double = Math.Round(tableau_density((tableau_density.Length - 1) \ 2), 4)
                    MsgBox(num1)
                    Dim num2 As Double = Math.Round(tableau_density(((tableau_density.Length - 1) \ 2) + 1), 4)
                    MsgBox(num2)
                    Dim median_density_1 As Double = (num1 + num2) \ 2
                    MsgBox("Median = " & median_density_1)
     
                End If
    Quand mon nombre d'élément est impair, pas de soucis, je récupère une médiane digne de ce nom.
    Problème :
    Quand mon nombre d'élément est pair, num1 prend bien une valeur, num2 également mais ma mediane (ici "median_density_1") est égale à 0.

    Pour info num1 et num2 sont toujours < ou = à 1, et j'ai essayer de changer double par décimal, même soucis.

    Une idée du problème?

    Merci d'avance !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Cela effectue une division entière. Si Num1 + Num2 < 2 alors le résultat sera égal à zéro.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et c'est / pour division normale
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Parfait, c'était bien ça le problème... honte à moi.

    Du coup j'ai utilisé decimal.divide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If (tableau_density.Length - 1) Mod 2 <> 0 Then 
                    median_density_1 = Math.Round(tableau_density(((tableau_density.Length + 1) / 2) - 1), 4)
                Else 
                    Dim num1 As Double = Math.Round(tableau_density((tableau_density.Length - 1) \ 2), 4)
                    Dim num2 As Double = Math.Round(tableau_density(((tableau_density.Length - 1) \ 2) + 1), 4)
                    median_density_1 = Math.Round(Decimal.Divide(num1 + num2, 2), 4)
                    MsgBox(median_density_1)
                End If
    Et ça roule

    Merci !



    EDIT : Je ne sais pas comment c'est possible mais j'ai réussi a ne pas voir le message de Pol63... donc en fait il suffisait juste d'inverser \ par /...

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

Discussions similaires

  1. Inclusion de classes / problème de déclaration
    Par scal-80 dans le forum C++
    Réponses: 5
    Dernier message: 21/06/2006, 16h28
  2. Réponses: 2
    Dernier message: 27/05/2006, 12h13
  3. problème de déclaration
    Par dirty_boy dans le forum C
    Réponses: 2
    Dernier message: 16/09/2005, 11h56
  4. Réponses: 11
    Dernier message: 29/04/2005, 19h45
  5. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17

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