4 votes

SQL Server format numérique

Quand je fais ce qui suit :

DECLARE @x float
SET @x = 1234.5
SELECT CONVERT(varbinary, @x)

Quel est le format retourné ? Je dois somehow récupérer le nombre d'origine depuis .net, et je n'ai que la valeur binaire disponible.

Clarification :

L'instruction ci-dessus retourne

(no column name)
0x40934A0000000000

D'une manière ou d'une autre, je dois récupérer la valeur 12345.5 à partir des données binaires 0x40934A0000000000.

0voto

RedFilter Points 84190

Le type de données correspondant en C# à SQL Server varbinary est byte[]. Mais, pourquoi convertissez-vous un flottant en binaire si vous voulez y accéder en tant que nombre?

0voto

erikkallen Points 16601

Apparemment, le format est en 64 bits IEEE, mais l'ordre des octets est inversé par rapport à ce que BitConverter.ToDouble attend. Le nombre peut être récupéré avec ce code :

long bits = 0;
for (int i = 0; i < 8; i++)
    bits = (bits << 8) | data[i];
return BitConverter.Int64BitsToDouble(bits);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X