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 :

[VB.NET] Problème de modulo


Sujet :

VB.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut [VB.NET] Problème de modulo
    Salut

    Je dois faire un calcul de temps et transformer un nombre de seconde en Heure, minute seconde.

    Selon mon code plus bas, j'arrive pas trop mal à mes fins sauf que le résultat test faux.
    Pour une donnée de base de 383.56734311302 voic ce que j'obtiens : 0 H 6 m 24 s

    On aura vite fait de remarquer que cela devrait donner 23 secondes.
    Alors ma question est : comment faire pour que le modulo n'arrondisse pas (à suposer que c'est lui qui le fait) ?
    Subsidiairement : comment je peux récupérer les milièmes pour les mettre à la suite ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim hci, mci, sci As Integer
                hci = drResult.GetValue(3) / 3600
                Hc = hci & " H "
                mci = (drResult.GetValue(3) Mod 3600) / 60
                Mc = mci & " m "
                sci = ((drResult.GetValue(3) Mod 3600) Mod 60) / 1
                Sc = sci & " s "
                drowTemps = dtResu.NewRow
                drowTemps(0) = drResult.GetValue(3)
                drowTemps(1) = Hc & Mc & Sc
                dtResu.Rows.Add(drowTemps)
    Merci pour votre aide
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    Tu as deja des fonctions pour manipuler des timestamps, notemment avec System.DateTime
    Grégory Schiro

    Blog PowerShell & MOF
    http://scriptingof.blogspot.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 48
    Points : 54
    Points
    54
    Par défaut
    Salut,

    A mon avis, tu dois remplacer les / par des \ pour avoir la division entière.

    Et le /1 sert à rien

  4. #4
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour cette piste, mais çà marche pas.
    A l'entrée ma donnée est un nombre de seconde calculée et se trouve de type FLOAT dans SQL Server. C'est pour çà que je fais des calculs pour déterminer les heures, minutes, secondes.

    J'ai pas trouvé de méthode dans DateTime pur convertir un nombre de seconde en String.

    Mais en fait mon souci se passe surtout sur le fait que MOD fait un arrondi assez dérangeant.

    Merci ARNO2000, en mettant les deux signes l'un à côté de l'autre, je peux voir qu'ils ne sont pas pareil. Dans mon bouquin, j'avais pas remarqué, vu qu'il sont pas au même endroit. c'est vraiment couillon comme truc.

    Mais l'ennui c'est que çà donne pas ce que je cherche. Mais je dois merder sur les secondes et les milièmes.

    Je vais continuer à plancher et si je trouve pas je reviendrais ici.

    @+
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, j'ai continé mais j'ai toujours pas réussi.

    Visiblement c'est pas Modulo qui déconne mais la division entière qui fais un arrondi alors qu'on lui demande rien.

    Voici mon code actuel

    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
     
                Dim hci, mci As Integer
                Dim mili, sci As Double
                Dim testtime As DateTime
                hci = drResult.GetValue(3) \ 3600
                Hc = hci & " H "
                mci = (drResult.GetValue(3) - (hci * 3600)) \ 60
                Mc = mci & " m "
                sci = drResult.GetValue(3) - (hci * 3600) - (mci * 60)
                Sc = (sci \ 1) & " s "
                mili = System.Math.Round((drResult.GetValue(3) - (hci * 3600) - (mci * 60) - (sci \ 1)), 3)
                Mic = mili * 1000 & " milième"
                drowTemps = dtResu.NewRow
                drowTemps(0) = drResult.GetValue(3)
                drowTemps(1) = Hc & Mc & Sc & Mic
    et le résultat est toujours de 6 minutes et 24 secondes, alors qu'il n'y en a que 23( je passe le milième qui forcément faux).

    Merci pour votre aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Tu as certainement une très bonne raison de réinventer des fonctionnalités qui existent déjà, mais voici quand même les solutions canoniques, des fois que...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // je garde l'heure courante
    DateTime stamp = DateTime.Now
     
    // je fais mes opérations
     
    // je calcule la durée
    TimeSpan duree = (DateTime.Now - stamp);
    // j'affiche la durée
    System.Diagnostics.Debug.WriteLine("Mes operations ont duré :"+duree.ToString());
    Dans les membres de TimeSpan tu as les secondes et les millisecondes

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

Discussions similaires

  1. [VB.NET] Problème d'installation d'une appli VB.NET
    Par ppzmr dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/11/2004, 10h09
  2. [VB.NET] Problème avec un OptionButton dans Excel 2003
    Par alfprod dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/09/2004, 13h40
  3. [VS.NET] Problème connection Source safe
    Par Nip dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 24/06/2004, 15h30
  4. [VB.NET] Problème sur composant comboBox hérité
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 14h54
  5. [CR][ASP.NET] Problème d'affichage du rapport
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 20/04/2004, 12h39

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