Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQL Diviser float par int

Donne un resultat special!

Sujet résolu
    2 août 2010 à 15:02:52

    Bonjour,

    J'effectue la division d'un champ type float par un champ type int...
    ... cela me donne un resulat special:

    SELECT
      `ach`.`Quantite` AS `Quantite`,
      `ach`.`Prix_ligne` AS `Prix ligne`,
      (`ach`.`Prix_ligne` / `ach`.`Quantite`) AS `Prix unitaire`
    FROM
      `ach_achats` `ach`
    ORDER BY
      `ach`.`Ligne`
    


    resultat :
    2 10,88 5,4400000572205
    2 4,78 2,3900001049042
    2 8,08 4,039999961853
    1 6,89 6,8899998664856
    1 6,89 6,8899998664856
    1 0,73 0,73000001907349
    1 1,97 1,9700000286102
    1 1,97 1,9700000286102

    j'ai essayé de remplacer (`ach`.`Prix_ligne` / `ach`.`Quantite`) par:
    (`ach`.`Prix_ligne` / `ach`.`Quantite`+0.0)

    Cela me donne la même chose...

    Une idée du problème?

    Merci de m'avoir lu,
    Yann.

    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2010 à 17:17:41

      http://dev.mysql.com/doc/refman/5.0/en [...] examples.html

      Citation : Manuel MySQL

      The floating-point calculation introduces small errors

      • Partager sur Facebook
      • Partager sur Twitter
      Ce n'est pas parce que vous ne savez pas vous servir d'un marteau qu'il faut planter des clous au tournevis.
        2 août 2010 à 17:44:22

        Merci pour la réponse si rapide Nightmat !

        Je ne suis pas très fort en anglais,
        Cette "petite" erreur lors de calculs avec le type float est plutôt gênante!

        Aucun moyen de la contourner?
        Faut-il choisir un autre type de variable?
        Si je me contente d'arrondir à deux chiffres après la virgule je n'aurai pas de mauvaise surprise?
        Sinon je pourrais faire la partie calcul dans ma page php est-ce mieux?

        Yann.
        • Partager sur Facebook
        • Partager sur Twitter
          2 août 2010 à 17:47:32

          De rien, perso je serais pour faire les calculs en php, ça permet en plus d'exécuter la requête plus rapidement ^^
          • Partager sur Facebook
          • Partager sur Twitter
          Ce n'est pas parce que vous ne savez pas vous servir d'un marteau qu'il faut planter des clous au tournevis.

          SQL Diviser float par int

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown