Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels 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 31/10/2011, 16h20   #1
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 1
Points : 1
Par défaut stockage des chiffres significatifs en BDD

Bonjour à tous,

J'ai utilisé une fonction pour le calcul des moyennes à deux chiffres significatifs ! J'ai fait des tests et ça affiche bien ce que j'attends.

Mon soucis est que mes moyennes sont stockées dans la base de données et elle sont corrects sauf dans le cas où j'ai un nombre dont la longueur est 1, genre "2". Avec ma fonction, j'obtiendrai "2.0". Si je fais un echo je vois bien "2.0" mais dans phpMyAdmin, ça enregistre "2" ? Il ne rajoute pas ".0" !! et pourtant le type de mon champ est float.

Quelqu'un a une idée ?
kikouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h57   #2
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 1
Points : 1
Par défaut chiffres significatifs

Bonjour à tous,

J'ai même essayer de modifier le type de mon champ (CHAR) et ça ne fonctionne pas !!! remarque que j'ai besoin de la moyenne pour calculer autre chose !!!
Merci d'avance
kikouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h11   #3
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

Utilise le type ce colonne "DECIMAL".
jeca est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h22   #4
Membre Expert
 
Inscription : mars 2005
Messages : 1 565
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2005
Messages : 1 565
Points : 2 178
Points : 2 178
Le problème n'est pas le type numérique choisi côté MySQL. Que ce soit en INTEGER, DECIMAL ou FLOAT : 2 = 02 = 000002 = 2.0 = 2.0000000.

Votre problème relève du formatage du nombre et doit se faire côté client (php). Récupérez votre nombre MySQL et utilisez : sprintf ou number_format.

edit : Vous pouvez aussi faire la conversion avec MySQL lors de la restitution (SELECT) mais ne choisissez surtout pas de stocker vos nombre en varchar.
vmolines est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 12h26   #5
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 1
Points : 1
Merci pour vos réponses.

@jeca : decimal n'est pas une bonne solution car je dois préciser le nombre de chiffres après la virgule ! Dans mon cas c'est variable mais il faut juste deux chiffres significatifs.
exemple :
2 devient 2.0
0.0504232 devient 0.050

@vmolines : Je vais tester de suite votre solution et je vous tiendrez au courant.

Encore merci à vous deux
kikouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 13h58   #6
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 1
Points : 1
Salut,

number_format ou sprintf ne résout pas le soucis ces fonctions sont utilisées pour l'affichage ! L'affichage ne me pose pas de problème. quand je fais echo, j'ai bien "2.0".

Les moyennes calculées sont stockées dans la base de données pour ensuite exporter un fichier csv pour une autre utilisation ! est c'est en base de données que ça ne stocke pas "2.0" !

Je ne sais pas si je suis claire ??
kikouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 08h47   #7
Membre Expert
 
Inscription : mars 2005
Messages : 1 565
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2005
Messages : 1 565
Points : 2 178
Points : 2 178
Je le répète en base de données et d'un point de vue mathématique 2 = 2.0. C'est le client phpmyadmin qui formate 2.0 comme quand vous faites un echo. Vous devez faire le même travail de formatage des colonnes numériques en texte pour générer votre csv.

Dans tous les cas ce n'est pas un problème de base de données et il faudrait poser votre question dans le forum php.
vmolines 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 10h15.


 
 
 
 
Partenaires

Hébergement Web