Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1061 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  les nombres à virgule flottante? MySql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

les nombres à virgule flottante? MySql

n°548258
saxgard
Posté le 23-10-2003 à 12:24:00  profilanswer
 

qu'elle est le meilleur typage a utiliser pour les nombres  a  virgule flottant avec MySql
Exemple pour des tarifs de produits
 
je suis un peu perdu entre
 
Float et Decimal ?
 
dans l'aide ca parle de precision et d'arrondi mais je saisi mal l'avanatge et les inconvenients de chacun
 
merci d'avance

mood
Publicité
Posté le 23-10-2003 à 12:24:00  profilanswer
 

n°548263
saxgard
Posté le 23-10-2003 à 12:28:18  profilanswer
 

en gros  
aucun prix ne doit etre arrondi
ceratin prix doiventa voir 4chiffres apres la virgule et d'autres 2
 
kel ets le meilleur type?
 
je pencherai pour decimal car je crois qu'il n'ya pas d'arrondi et que c'est considéré comme uen chaine , mais je demande confirmation
 
Ensuite comment faire en php pour tester si un chiffre saisi dans un formulaire est un nombre a virgule flottante?
 

n°548270
saxgard
Posté le 23-10-2003 à 12:37:16  profilanswer
 

decimal en PHP  = 1.5
décimal SGBD =1,5
 
en fonction de se qu'on veut on est obligé soit meme de faire les modifications associés?
le passage de la varibale PHP dans la base MySql causerai un pb non?
;o)

n°548331
Mara's dad
Yes I can !
Posté le 23-10-2003 à 13:40:23  profilanswer
 

1- Choisi decimal
2- http://fr3.php.net/manual/fr/function.is-float.php
3- Décimal MySql : c'est le point(.) qui est utilisé.
Exemple :
INSERT INTO test set prod_id=26, prix=12345.12


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°548335
MagicBuzz
Posté le 23-10-2003 à 13:42:40  profilanswer
 

Float va stocker ta variable sous forme d'une division d'entiers. C'est "pas précis" (pour les très gros montants ou les très petits montants, tu risque d'avoir des trucs style 199999999999.9999 au lieu de 200000000000.0000 ce qui fout le bronx.
 
Decimal quand à lui c'est un stockage à la façon "chaîne de caractère", c'est à dire qu'il va stocker les chiffres éxacts, âchant qu'il est de mémoire limité à plus de chiffres, donc c'est mieu.
 
Un champ décimal se déclare normalement decimal(13,4) ce qui veut dire que tu veux 13 chiffres dont 4 après la virgule (donc avec mon exemple tu montes jusqu'à "1 000 000 000 - 0.0001"

n°548339
saxgard
Posté le 23-10-2003 à 13:46:58  profilanswer
 

merci merci a vous 2
donc c'est bon ca confirm mon choix de "decimal"  ;o)

n°548346
saxgard
Posté le 23-10-2003 à 13:49:54  profilanswer
 

Mara's dad a écrit :

1- Choisi decimal
2- http://fr3.php.net/manual/fr/function.is-float.php
3- Décimal MySql : c'est le point(.) qui est utilisé.
Exemple :
INSERT INTO test set prod_id=26, prix=12345.12


 
is_float ne fonctionne pas
 
que je rentre 12.3 ou 12,3 il me detect jamais que c'est un float

n°548348
saxgard
Posté le 23-10-2003 à 13:50:36  profilanswer
 

donc comment faire pour tester que la valeur dans un champ est un decimal? (mais avec une virgule pas le point)

n°548350
MagicBuzz
Posté le 23-10-2003 à 13:51:31  profilanswer
 

Bah tu fais un replace du point par une virgule :D

n°548355
saxgard
Posté le 23-10-2003 à 13:55:04  profilanswer
 

MagicBuzz a écrit :

Bah tu fais un replace du point par une virgule :D


 
 :)  non je ne veux pas faire ca pour diverse raison  
je pourrais mais je veux pas (par choix et pour forcer ceux qui reference les produits a faire des saisis correct)
c'ets une contrainte que mon chef ma fait.
Par contre je doit bien tt tester ou sont les ereurs et les prévenirs  :D

mood
Publicité
Posté le 23-10-2003 à 13:55:04  profilanswer
 

n°548363
saxgard
Posté le 23-10-2003 à 14:00:30  profilanswer
 

et puis autre question ;o)
 
ya t-il une fonction PHP qui permet de savoir le nombre de chiffres apres la virgule?

n°548405
Mara's dad
Yes I can !
Posté le 23-10-2003 à 14:34:56  profilanswer
 

Il te faut une virgule, c'est bien çà !
 
Si oui, tu va devoir la changer en point pour l'insert en base.
 
En fait tu teste pas des nombres, mais des chaînes de caractères.
 
Donc exemple pour tester et/ou compter
 

$valeur = '1234,123';
$partie_entiere = 0;
$partie_decimale = 0;
if( preg_match( "/([0-9]+)[,]{1}([0-9]+)/", $valeur, $parties ) )
{
 $partie_entiere = $parties[1];
 $partie_decimale = $parties[2];
}
else
{
        // Erreur de saisie
}
$nombre = "$partie_entiere.$partie_decimale";
$nb_decimales = strlen( $partie_decimale );


Message édité par Mara's dad le 23-10-2003 à 14:35:51

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°548412
saxgard
Posté le 23-10-2003 à 14:42:23  profilanswer
 

Mara's dad a écrit :

Il te faut une virgule, c'est bien çà !
 
Si oui, tu va devoir la changer en point pour l'insert en base.
 
En fait tu teste pas des nombres, mais des chaînes de caractères.
 
Donc exemple pour tester et/ou compter
 

$valeur = '1234,123';
$partie_entiere = 0;
$partie_decimale = 0;
if( preg_match( "/([0-9]+)[,]{1}([0-9]+)/", $valeur, $parties ) )
{
 $partie_entiere = $parties[1];
 $partie_decimale = $parties[2];
}
else
{
        // Erreur de saisie
}
$nombre = "$partie_entiere.$partie_decimale";
$nb_decimales = strlen( $partie_decimale );




 
je te remercie  ;o)
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  les nombres à virgule flottante? MySql

 

Sujets relatifs
MySQL - Delete avec une jointure?[mysql] Syntaxe ligne de commande pour restaurer une BDD en shell
[MySQL] problème avec requête GRANTGrosse table MySQL
Pourquoi MySql force mes champs en varchar?VC++7 et mysql
[mysql] Undefined variable: PHPSESSIDremplacer les transactions sur MySQL et PHP
[ PHP / MySQL ] requête de base ; résultat bizarre ...MySQL / Free - requête qui marche pas ...
Plus de sujets relatifs à : les nombres à virgule flottante? MySql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR