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 :

Math sql vs c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut Math sql vs c#
    Bonjour j'aurais besoin d'aide pour un petit problème.

    Je suis entrain de refaire une série de calcul sql en c# pour décharger mon serveur, mais voilà je me rends compte que c# est beaucoup plus précis dans les calculs avec décimal. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    En sql
    select 21.5/129 
    Retourne 0.166666
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    En C#
    21.5/129
    Retourne 0.166666666666666667
    À la fin, ça joue de quelques millièmes voir centième, ce qui est acceptable, mais mon problème est que je dois valider mes nouveaux calculs avec d'ancien calculs. Il faut donc que mes calculs en C# soient pareils à sql
    Donc:
    21.5/129 = 0.166666

    Ma solution que je n'aime pas vraiment est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Math.Truncate((21.5 / 129)*1000000)/1000000
    *Je ne peux pas refaire les anciens calculs en sql.

  2. #2
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,

    essaie avec un float (dans ton exemple c'est implicitement un Double) :

    21.5F / 129

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    En C# 
    21.5F / 129
    retourne 0.1666667

  4. #4
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Bon,

    si c'est juste pour tester tes résultats, tu peux feinter comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var result = Math.Round(21.5D / 129, 6).ToString("###################.000000");
     
    var commeSQL = double.Parse(result.Substring(0, result.Length - 1));

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    Merci, mais ça fait un peut long, car j'ai plusieurs centaines lignes de calculs comme ça à corriger.

    Je crois que je vais devoir rester avec ma merveilleuse solution ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Math.Truncate((21.5 / 129)*1000000)/1000000

  6. #6
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Pour la longueur, tu n'as qu'à faire une fonction...
    Par contre je suis d'accord que ce n'est pas tellement meilleur que ta solution première

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

Discussions similaires

  1. [PL / SQL] Fonction math ds table sql
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 5
    Dernier message: 11/02/2007, 16h50
  2. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  3. Maths : équations
    Par Anonymous dans le forum Mathématiques
    Réponses: 5
    Dernier message: 02/05/2002, 16h41
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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