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

C# Discussion :

Précision aprés virgule


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut Précision aprés virgule
    Bonjour, j'ai du mal a forcer la precision de 3 chiffres aprés virgule dans mon programme , je declare mes variable en tant que Double , et je les declare comme real dans la base de donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PMC1_N = Math.Round(RegistresPlc.PMC1_N, 3);
    Quand je fait un select normal sur la requete il me donne un chiffre aprés virgule alors qu'il contient 3 chiffres en vrai
    Nom : Capture.jpg
Affichages : 323
Taille : 28,4 Ko
    quand je fait une requette avec Round j'obtient le resultat souhaité
    Nom : Capture2.jpg
Affichages : 306
Taille : 27,9 Ko

    et sur un autre colonne le resultat que je calcule est sans virgule normalement il doit ajouter des 0 aprés virgule
    Nom : Capture3.jpg
Affichages : 356
Taille : 29,2 Ko

    Comment je peux focer cette precision de 3 chiffres aprés virgule , vous avez des idées

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 730
    Points : 5 391
    Points
    5 391
    Par défaut
    Sans préciser le SGBDR tu utilises, il va être difficile de te répondre.

    ça ressemble à du SQL serveur niveau IHM, alors je dirais que si tu veux absolument que tes valeurs arrivent en base avec trois décimales il faut utiliser le type numeric(int, dec).
    Exemple : numeric(18, 3).

    Quelle est le type exact de la colonne ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Mes variables sur le programme c# sont déclarées en Double puisque elles contiennent des virgules
    Sur la base de données la colonne est déclarée comme Real

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 730
    Points : 5 391
    Points
    5 391
    Par défaut
    Comme je l'ai dit, si tu veux que tes valeurs arrivent en base avec trois décimales, il faut déclarer ta colonne de type numeric(18, 3).
    Et puisqu'un exemple vaux mieux que 1000 mots.

    Exécute ce script et regarde le résultat :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE [dbo].[Table_Nombre](
    	[n] [numeric](18, 3) NULL,
    	[r] [real] NULL
    ) ON [PRIMARY]
    GO
     
    insert into [Table_Nombre] values (495803.469,495803.469)
    insert into [Table_Nombre] values (4614998,4614998)
    go
     
    select * from [Table_Nombre]

    Spoiler, le résultat sera le suivant :
    495803.469	495803,5
    4614998.000	4614998
    Ensuite, ton but est de gérer des opérations monétaires ou financières, il faut mieux utiliser le type decimal dans ton code C#
    Citation Envoyé par MSDN
    Because the decimal type has more precision and a smaller range than both float and double, it's appropriate for financial and monetary calculations.

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 983
    Points : 2 051
    Points
    2 051
    Par défaut
    Comme le dit @popo, je changerai le type dans la base de données et passerai sur du numeric et non sur des réels, la précision de ces derniers n'étant pas assurées.

  6. #6
    Invité
    Invité(e)
    Par défaut Je vous remercie
    Je vous remercie c'est résolut

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 730
    Points : 5 391
    Points
    5 391
    Par défaut
    Citation Envoyé par magmaaka Voir le message
    Je vous remercie c'est résolut
    Dans ce cas, n'oublie pas de cliquer sur le bouton "Résolu" en dessous des messages

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

Discussions similaires

  1. chiffres aprés virgul
    Par mohfa2001 dans le forum Delphi
    Réponses: 10
    Dernier message: 07/04/2007, 19h12
  2. [BigDecimal][nbDigits] conversions chiffres apres virgule
    Par jeb001 dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 11/10/2006, 14h08
  3. [debutant] limiter nombre apres virgule
    Par tony_big_guy dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2006, 14h29
  4. problème d'arrondi à 2 chiffres après virgule
    Par nerick dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 17h26
  5. extraire 2 chiffres après virgule ?
    Par nerick dans le forum C
    Réponses: 2
    Dernier message: 13/12/2002, 17h10

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