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

Windows Forms Discussion :

[C#] Type decimal


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [C#] Type decimal
    Bonjour,
    Dans mon code j'ai variable de type décimal et je cherche à savoir s'il elle vaut null.

    Si quelqu'un peut m'aider.

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    il ne suffit pas de tester si myDecimal == null ?

    ou alors tu es dans un dataset et le champ qui est decimal est null :

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Le myDecimal == null ne compile pas,

    Pour info je ne suis pas dans un data set.

    Le type decimal est nullable, j'ai besoin de cette propriété mais le problème c'est que je ne sait pas savoir si mon decimal est null.

  4. #4
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    mets nous le code qui ne compile pas, ça sera plus simple que d'en parler dans le vide
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je n'ai pas de code qui ne compile pas je dis juste que la réponse
    Mondecimal == null; ne compile pas car l'opérateur == ne peut pas être appliqué tout simplement.

    Voilà si vous avez une idée

  6. #6
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    la question est : peut il vraiment être null ?
    si j'ai bien compris, il fonctionne de la même manière que le type int c'est à dire que c'est un "value type" donc aucune chance à mon avais qu'il puisse être nul. Il peut contenir n'importe quelle valeur s'il n'est pas initialisé mais la valeur null ne signifie rien pour ce type
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je viens de voire ça et c'est là mon pb c'est qu"il peut contenir n'importe quoi et pas null.
    Je ne sais pas comment faire existe t-il un type qui peut être nullable.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Es ce que lorsqu'il n'est pas initialisé la valeur est toujour la même ?
    Si c'est le cas je peux peut être m'en sortir.

  9. #9
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par Emilio04
    Je viens de voire ça et c'est là mon pb c'est qu"il peut contenir n'importe quoi et pas null.
    Je ne sais pas comment faire existe t-il un type qui peut être nullable.
    Avec le Framework v2 (beta 2 sûr, la 1 aussi je pense), les "Nullable Types" ont fait leur apparition. Ca correspondrait à ce que tu cherches je pense.

    Pour définir un "Nullable Type" il faut ajouter un ? après le type :

    La propriété HasValue permet de savoir si la variable contient quelque chose ou non et la propriété Value permet de récupérer le contenu de la variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (valeur.HasValue) { Console.WriteLine(valeur.Value); }
    Un accès à la propriété Value si HasValue est false renvoie une exception.

    Pour plus d'infos => Nullable Types
    Pas de questions techniques par MP

  10. #10
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    Tout cela est bien intéressant, je ne savais pas..
    Cela dit, je pense que dans ton cas, le fait d'initialiser la variable et de tesetr sa valeur (-1 par exemple) devrait suffir ...
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    OK merci de vos réponse mais j'ai deux soucis le premier c'est que je ne peux pas passer à la version 2 du framework.
    Deuxième le fait de mettre -1 me pose pb car mon décimal sert à alimenter une liste déroulante et obligatoirement ça affiche -1 et donc ça ne me vas pas.

    Il faut que je me définisse mon propre type décimal qui serait nullable si quelqu'un peut m'aider je suis prenneur

    Merci d'avance

  12. #12
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par Emilio04
    OK merci de vos réponse mais j'ai deux soucis le premier c'est que je ne peux pas passer à la version 2 du framework.
    Deuxième le fait de mettre -1 me pose pb car mon décimal sert à alimenter une liste déroulante et obligatoirement ça affiche -1 et donc ça ne me vas pas.

    Il faut que je me définisse mon propre type décimal qui serait nullable si quelqu'un peut m'aider je suis prenneur

    Merci d'avance
    pour quoi ne pas faire un test avant l'ajout dans la liste déroulante ?
    du genre si c'est = à -1 alors tu le met pas ?

    Et puis mettre un null dans une liste déroulante je sais pas si ça leve pas une execption ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  13. #13
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    Peux tu expliquer plus ce que tu cherches à faire ! Car là je pense que la solution n'est pas du côté du Decimal mais ailleurs !
    A quoi sert ton Decimal par rapport à ta combobox ?
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  14. #14
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par DrQ
    Peux tu expliquer plus ce que tu cherches à faire ! Car là je pense que la solution n'est pas du côté du Decimal mais ailleurs !
    A quoi sert ton Decimal par rapport à ta combobox ?
    a la remplir non ?
    il veux afficher des nombres très précis dans une combobox ?
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  15. #15
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par Emilio04
    Je n'ai pas de code qui ne compile pas je dis juste que la réponse
    Mondecimal == null; ne compile pas car l'opérateur == ne peut pas être appliqué tout simplement.

    Voilà si vous avez une idée
    Decimal n'est pas nullable !

    Je te propose de faire ca quant tu le crée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Decimal MonDecimal = 0.0m;
    c'est la seule façon d'initialiser ta valeur à la création !
    tu peux remplacer 0.0m par la valeur DÉCIMALE qui t'arange le plus
    une valeur decimale s'ecrit avec le sufixe m
    exemple:

  16. #16
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Decimal MonDecimal = 0.0m;
    Oui mais cette ligne de code initialise le décimal à 0 et pas à null.

    Aujourd'hui j'ai deux solution utiliser les types que j'ai trouvé sur
    http://<br /> http://nullabletypes....rge.net/<br />
    ou utiliser les décimaux ne pas les initialiser et dans toutes mes opérations utiliser le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
          // Traitement
    }
    catch(NullReferenceException)
    {
    	throw new ...
    }
    Je pense utiliser la deuxième solution car la première remet en cause pas mal de mon code.

    Voilà vivement qu'on passe à la version 2 du framework.

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

Discussions similaires

  1. Type Decimal et liaison avec Acces 2000
    Par clisson dans le forum DB2
    Réponses: 2
    Dernier message: 09/11/2011, 11h36
  2. Conversion type DECIMAL en "?"
    Par snoopy69 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/08/2008, 13h08
  3. coversion type decimal en reel double
    Par zebi42 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/06/2007, 14h43
  4. access 2003 et type decimal sql
    Par jjpointu dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 30/03/2006, 10h30
  5. type DECIMAL et NUMERIC
    Par KRis dans le forum Débuter
    Réponses: 1
    Dernier message: 11/03/2006, 18h52

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