|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : février 2011 Messages : 60 ![]() |
Bonjour,
J'ai un problème dont je trouve pas d'explication je calcule une somme en sql comme suit: Code :
Alors en excel avec les mêmes chiffres j'obtiens le total de 1. Je dois avoir en sql un total de 1 pour que mon calcul soit juste en global. Je dois prendre en sql le chiffre en totalité de ses chiffres après la virgule. les valeurs en sql sont de type nvarchar je les converti en float pour mon calcul. Je comprends pas ou est le problème pourquoi sql retourne 0.99999 et non pas 1, quel type de données à mettre. Merci de m'aider . |
||
|
|
00
|
|
|
#2 | |||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Citation:
- ce type est conçu pour stocker des chaînes de caractères, et non pas des valeurs décimales - le fait d'utiliser nvarchar utilise Unicode, ce qui fait que tout caractère utilise 2 octets. Or comme les chiffres ne sont pas des caractères non-latins, il n'y a aucun intérêt à les stocker en Unicode. Pour stocker une chaîne qui ne contiendra que des caractères de l'alphabet latin et/ou des chiffres, on utilise varchar, qui utilise ASCII et donc un seul octet par caractère. D'autre part le type float n'est pas, comme son nom l'indique, un type de données précis, ce qui explique l'imprécision que vous obtenez. Vous devez donc pour cela utiliser le type decimal : Code :
Qui lui non plus de retourne pas 1 mais une valeur très proche de 1. Je ne sais pas quel est le nombre d'octets qu'Excel utilise pour effectuer des calculs avec des nombres décimaux à large mantisse, mais ce ne doit pas être les 9 octets que j'utilise dans l'exemple. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|||
|
00
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Excel ne trouve pas non plus 1 dans ce calcul, mais arrondit à 1 en fonction de la cosmétique que vous avez donné à ce champs, ce qui est plus pervers !!!!!!!
http://www.developpez.net/forums/att...1&d=1310895784 Bref, apprenez à vous servir d'Excel avant de mettre en doute SQL Server ! 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
|
Copyright © 2000-2012 - www.developpez.com