2009-10-16 2 views
1

Использование команды обновления TSQL для базы данных SQLServer, как я могу обновить столбец типа FLOAT с минимально возможным двойным значением?Сохранение Double.MinValue в SQLServer

Наименьшее возможное двойное значение в шестнадцатеричном будучи 3ff0 0000 0000 0001 (http://en.wikipedia.org/wiki/Double_precision)

ответ

0

Не используйте десятичную, чтобы не потерять значение. Или двоичный (8), если вы хотите сохранить его в шестнадцатеричном формате, как в статье.

Серьезно: в зависимости от процессора, направления ветра и фазы луны, он, скорее всего, не получит то же значение, когда вам удастся его преобразовать.

И что вы подразумеваете под «наименьшим»? 3ff0 0000 0000 0001 = 1.0000000000000002

И, это шестнадцатеричный клиент, но вы хотите поплавать в db?

1

Независимо от того, что вам нужно для этого, я предлагаю вам рассмотреть альтернативы, которые не требуют предположений о типе FLOAT SQL Server. К сожалению, SQL Server довольно разборчив в отношении соответствия IEEE 854. Например, см. these newsgroup threads. Также обратите внимание, что поведение SQL Server в этом отношении has changed между версиями и может снова измениться без предупреждения. Без предоставления всех подробностей gory наименьшее значение, которое вы можете назначить непосредственно FLOAT, не обязательно является наименьшим значением, которое FLOAT может содержать (без жалоб). Некоторое изъявление SQL Server также вращается вокруг того, что IEEE называет «денормализованными» числами с плавающей запятой, рассмотрение которых важно, если вы хотите, чтобы «наименьший» имел точное значение.

Извините, что не ответил на ваш вопрос, но я не думаю, что много хорошего может прийти из ответов, которые помогут вам отправиться дальше по скалистому пути, на котором вы находитесь.

Смежные вопросы