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écimales


Sujet :

VB.NET

  1. #1
    Membre habitué Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Points : 135
    Points
    135
    Par défaut Problème de décimales
    Bonjour tout le monde !

    Alors mon problème va être simple à poser. J'ai ce 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Dim fileNames = My.Computer.FileSystem.GetFiles("C:\ProgramData\EmuWare\Temp\Extract\", FileIO.SearchOption.SearchTopLevelOnly, "*.*")
    Dim info As System.IO.FileInfo
     
    For Each file As String In fileNames
     
                        info = My.Computer.FileSystem.GetFileInfo(file)
     
                        'On prépare les données pour chaque colonne du datagrid
                        Dim str(3) As String
                        Dim itm As ListViewItem
                        str(0) = resultat
                        str(1) = ext
     
                        Dim CalculatedSize As Decimal
                        Dim TheSize As Long = Long.Parse(info.Length)
                        Dim typefichier As String = "B"
     
                        If TheSize < 1024 Then
                            CalculatedSize = TheSize
     
                        ElseIf TheSize > 1024 AndAlso TheSize < (1024 ^ 2) Then 'KB
                            CalculatedSize = Math.Round((TheSize / 1024), 2)
                            typefichier = "Kb"
     
                        ElseIf TheSize > (1024 ^ 2) AndAlso TheSize < (1024 ^ 3) Then 'MB
                            CalculatedSize = Math.Round((TheSize / (1024 ^ 2)), 2)
                            typefichier = "Mb"
     
                        ElseIf TheSize > (1024 ^ 3) AndAlso TheSize < (1024 ^ 4) Then 'GB
                            CalculatedSize = Math.Round((TheSize / (1024 ^ 3)), 2)
                            typefichier = "Gb"
     
                        ElseIf TheSize > (1024 ^ 4) Then 'TB
                            CalculatedSize = Math.Round((TheSize / (1024 ^ 4)), 2)
                            typefichier = "Tb"
     
                        End If
     
    str(2) = CalculatedSize.ToString() + " " + typefichier
    Et je ne comprends pas pourquoi je ne vois pas dans mon datagrid le résultat sous la forme par exemple : "4.88 Mb", mais à chaque fois "4 Mb", pour le str(2).

    Est-ce que quelqu'un pourrait m'aider à me dépatouiller de ça svp car je rame sévère là :'(

    Merci d'avance.

    Cordialement-

    --
    Shennong

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    C'est probablement parce qu'il te manque une addition après ta division entière:

    Mais, tu peux aussi jeter un œil ici
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre habitué Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Points : 135
    Points
    135
    Par défaut
    Merci pour ta réponse Clementmarcotte, mais je ne comprends pas. Pourquoi me manquerait-il une addition ?

    Pourtant dans le code je mets bien que je veux deux décimales, j'ai beau relire mon bout de code, cela devrait pourtant fonctionner ... je suis perdu là :'(

    Cordialement-

    --
    Shennong

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Mars 2011
    Messages : 105
    Points : 153
    Points
    153
    Par défaut
    salut,

    lu sur le site microsoft :
    " Précision. Decimal n'est pas un type de données à virgule flottante.La structure Decimal contient une valeur entière binaire, avec un bit de signe et un facteur d'échelle d'entier qui spécifie quelle partie de la valeur est une fraction décimale.C'est pourquoi les nombres Decimal ont une représentation plus précise dans la mémoire que les types à virgule flottante (Single et Double)."

    Tu devrais essayer avec un type à virgule flottante.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Shennong Voir le message
    Merci pour ta réponse Clementmarcotte, mais je ne comprends pas. Pourquoi me manquerait-il une addition ?

    --
    Shennong
    Mille excuses, j'ai dit une horreur, parce que j'avais en tête une formule que j'appliquais avec Excel 1997, parce que, VBA a supporté Round uniquement à partir d'Office 2000
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Membre habitué Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Points : 135
    Points
    135
    Par défaut
    Aaah ! pas bête baloub. Pourtant j'ai regardé la doc sur les types de "nombres", et le type "Decimal" s'apparentait pourtant à un nombre à virgule. Peut-être que je devrais essayer en "Double" alors. J'ai une question bête aussi : qu'est-ce qu'ils entendent exactement par "virgule flottante" ???

    Pas de soucis clementmarcotte Je vais continuer de chercher une solution à mon problème, j'espère y arriver car ça me stop complètement depuis plus d'une semaine ce truc, j'en ai marre :'(

    Je reviens vers vous si j'ai du nouveau !

    Cordialement-

    --
    Shennong

  7. #7
    Membre actif
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 127
    Points : 288
    Points
    288
    Par défaut
    Hello,
    Je ne code pas en vb mais je pense qu'il faudrait faire un cast de ton Math.Round en decimal quand tu affectes ton résultat à CalculatedSize.
    En c#, ça donnerait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CalculatedSize = (decimal)Math.Round((TheSize / (Math.Pow(1024, 2))),2);

Discussions similaires

  1. [Conception] Problème de décimales Access>PHP
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 04/01/2006, 15h47
  2. [FLASH MX2004] Problème de décimales
    Par stip dans le forum Flash
    Réponses: 3
    Dernier message: 15/07/2005, 23h45
  3. [FLASH MX] Problème de décimale avec euro
    Par yoda_style dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2005, 04h14
  4. [CR8] Problème de décimales avec Centura
    Par ccquick dans le forum SAP Crystal Reports
    Réponses: 13
    Dernier message: 05/10/2004, 10h46
  5. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24

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