2009-10-16 13 views

Répondre

0

Ne pas, utilisez décimal pour ne pas perdre la valeur. Ou binaire (8) si vous voulez le stocker en hexadécimal, selon l'article. Sérieusement: en fonction de la CPU, de la direction du vent et de la phase de la lune, il est fort probable que la valeur ne soit pas la même lorsque vous réussirez à la convertir.

Et que voulez-vous dire par "plus petit"? 3ff0 0000 0000 0001 = 1.0000000000000002

Et, est-il hexadécimal dans le client mais vous voulez flotter dans le db?

1

Quelle que soit la raison pour laquelle vous en avez besoin, je vous suggère de considérer des alternatives qui ne nécessitent pas d'hypothèses sur le type FLOAT de SQL Server. Malheureusement, SQL Server est plutôt flou à propos de la conformité IEEE 854. Par exemple, voir these newsgroup threads. Notez également que le comportement de SQL Server à cet égard has changed entre les versions et peut bien changer à nouveau sans avertissement. Sans donner tous les détails sanglants, la plus petite valeur que vous pouvez attribuer directement à un FLOAT n'est pas nécessairement la plus petite valeur qu'un FLOAT peut contenir (sans se plaindre). Certains aspects de la vulnérabilité de SQL Server tournent également autour de ce que l'IEEE appelle des nombres à virgule flottante "dénormalisés", dont la prise en compte est importante si vous voulez que le "plus petit" ait une signification précise.

Désolé de ne pas répondre à votre question, mais je ne pense pas que beaucoup de bonnes choses peuvent provenir de réponses qui vous aideront à vous diriger plus loin sur le chemin rocailleux où vous vous trouvez.

Questions connexes