|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Vincent Développeur informatique Inscription : janvier 2009 Messages : 248 ![]() |
Bonjour,
Voici mon problème : lorsque je récupère en PHP une des données de ma base celle-ci à une valeur légèrement différente que celle stockée en base : Ex : - en base : 96629,54 - à la sortie de requête faite en PHP : 96629.53999999999 Ma config: MS SQL SERVER LAMP - PHP 5.2 ODBC + FREETDS (je soupçonne un bug à ce niveau) type de la donnée en base : float Ma question : Connaissez-vous une solution pour palier ce problème ? Question subsidiaire : Auriez-vous un autre type de connexion à la base MS SQL à me conseiller ? Est-ce qu'un driver PDO peut être une bonne solution ? (j'ai vu qu'il était encore expérimental pour l'accès MSSQL) Merci de votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Les types de données FLOAT et REAL sont des implémentations de nombres réels en base binaires tel que la norme FIPS/IEEE (754-1985) l'a prévue, donc avec des erreurs dues aux écarts d'arrondis de la conversion base 2 base 10.
Si vous voulez des nombres exacts en base 10 (par exemple pour la comptabilité) il vous faut utiliser les type DECIMAL ou NUMERIC en précisant le nombre de chiffres significatifs et la précision. Par exemple DECIMAL(16,2). A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Vincent Développeur informatique Inscription : janvier 2009 Messages : 248 ![]() |
Merci beaucoup
, j'ai justement hésité à passer le type en decimal.J'essaie cela dès demain, et je posterai un retour. |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Vincent Développeur informatique Inscription : janvier 2009 Messages : 248 ![]() |
Ok, ça fonctionne impec. Néanmoins j'ai dut faire une autre petite modif car à l'enregistrement, les champs de mon formulaire qui étaient vides faisaient planter la requête d'update (converting char to numeric - et je n'avais pas ce problème en type float), maintenant je passe tous les champs monétaires de mon formulaire à 0 lorsqu'ils sont vides avant l'update et tout fonctionne nickel.
Encore merci
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com