Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2011, 19h24   #1
Invité de passage
 
Inscription : mars 2010
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 25
Points : 2
Points : 2
Par défaut problème float ?

Bonjour,

j'ai easyphp 5.3.2 et phpmyadmin 3.2.5
J'ai fait une base de donnée avec table dans laquelle j'ai un champ qui est de type float(10,2).
Et j'ai des comportements qui me paraissent bizarres.
Si j'édite ma base dans phpmyadmin et que je mets par exemple :
487481.54 ça me met 487481.53
1518948.15 ça me met 1518948.13
12540000.25 ça me met 12540000.00


Pourquoi ?
dzaohfz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 20h06   #2
Invité de passage
 
Inscription : mars 2010
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 25
Points : 2
Points : 2
Je penses que je vais passer en decimal(10,2) qui semble bien fonctionner lui....
Mais je ne comprends toujours pas le comportement avec float
dzaohfz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h22   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
Doc MySQL :
Citation:
Les types NUMERIC et DECIMAL sont considérés comme identiques par MySQL, comme l'autorise le standard SQL92. Ils sont utilisées par des valeurs dont il est primordial de conserver la précision exacte, comme pour des données financières.


Le type FLOAT est utilisé pour représenter des données numériques approchées. La norme ANSI/ISO SQL92 permet la spécification optionnelle de la précision (mais pas de l'intervalle de validité) en fournissant le nombre de décimales voulues après la spécification de type, et entre parenthèses. L'implémentation de MySQL supporte aussi le paramétrage de la précision. Si le mot clé FLOAT est utilisé pour une colonne sans précision supplémentaire, MySQL utilise quatre octets pour stocker les valeurs. Une syntaxe alternative existe aussi, elle utilise deux paramètre optionnel après le mot clé FLOAT. Avec cette option, le premier nombre représente toujours la taille de stockage nécessaire pour la valeur, et le second nombre représente le nombre de chiffres à stocker et afficher, après la virgule décimale (comme pour les types DECIMAL et NUMERIC). Lorsque MySQL stocke un nombre pour une telle colonne, et que cette valeur a plus de décimale que requis, la valeur est arrondie pour éliminer les chiffres surnuméraires.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h25   #4
Invité de passage
 
Inscription : mars 2010
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 25
Points : 2
Points : 2
Oué mais ils disent pas que si on met 1518948.15 alors que l'on a bien mis un FLOAT(10,2) ça le transforme en 1518948.13....
Donc au final je transforme tous mes float en decimal ?
dzaohfz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h40   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par dzaohfz Voir le message
Donc au final je transforme tous mes float en decimal ?
Si tu veux conserver la précision c'est mieux oui.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h10.


 
 
 
 
Partenaires

Hébergement Web