elecman a écrit :
J'ai un probleme d'arrondissement en sql et j'aimerait bien que vous m'aider. Voici en gros la requete tres simplifier:
Select round(100.555,2) from ........
Le resultat me donne 100.55 alors que je veut qui me donne 100.56. Si j'arrondit 100.556, il me donne bien 100.56 Selon moi, ca doit une setting dans les options regional ou un truc du genre qui dit que le chiffre 5 est arrondit a un chiffre inférieur. C'est une requete que je fait avec microsoft Sql server 2000 si ca peut aider. Merci
|
c'est pas dans les settings.
gros edit (sorry, je réfléchis et teste avant de poster la prochaine fois)
les round() et autres font l'objet de conventions. par conséquent, il n'y a pas de modification de leur comportement possible dans les settings.
ils auront systématiquement le même fonctionnement, quelque soit le langage, la plateforme et la langue utilisée.
Dans un script VBS, j'ai fait ça :
Code :
- msgbox(round(1.5, 0))
- msgbox(cint(1.5))
- msgbox(int(1.5))
|
J'obtiens 2, 2 et 1.
=> Le CInt() semble faire ce que tu veux.
=> Pour les arrondis à l'entier près, le round() aussi.
=> Le int() ne garde que la partie entière (comme le floor pour les nombres positifs, et comme le ceil pour les nombres négatifs logiquement)
Code :
- msgbox(round(1.55, 1))
- msgbox(cint(1.55 * 10) / 10)
|
Idem, j'ai 1.6 deux fois.
Round semble donc donner le bon résultat. Me demande si t'as pas rêvé, logiquement ça devrait être pareil entre SQL Server et VBS
Dans tous les cas, CInt() donne le bon résultat. Donc tente de faire avec lui.
Message édité par Arjuna le 17-07-2006 à 11:08:18