Числовой формат SQL Server - PullRequest
       4

Числовой формат SQL Server

4 голосов
/ 27 сентября 2010

Когда я делаю следующее:

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

Что такое возвращаемый формат? Мне нужно каким-то образом получить исходное число из .net, и у меня есть только двоичное значение.

Пояснение:

Вышеприведенное утверждение возвращает

(no column name)
0x40934A0000000000

Почему-то я должен получить значение 12345.5 из двоичных данных 0x40934A0000000000.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2010

Очевидно, что формат IEEE 64-битный, но порядок байтов противоположен тому, что ожидает BitConverter.ToDouble.Номер можно получить с помощью этого кода:

long bits = 0;
for (int i = 0; i < 8; i++)
    bits = (bits << 8) | data[i];
return BitConverter.Int64BitsToDouble(bits);
0 голосов
/ 27 сентября 2010

Соответствующий тип данных в C # для SQL Server varbinary равен byte[].Но почему вы конвертируете число с плавающей точкой в ​​двоичный файл, если хотите получить к нему доступ как к числу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...