C # плавать в реальный в SQL Server - PullRequest
       0

C # плавать в реальный в SQL Server

3 голосов
/ 23 сентября 2011

Я пытаюсь использовать Entity Framework и у меня есть база данных контактов, в которой хранятся данные о долготе и широте из Карт Google.

Руководство говорит, что это должно храниться как float.

Я создал свою сущность POCO, которая включает Longitude как float и Latitude как float.

Я только что заметил, что в базе данных они оба выглядят как real.

Еще предстоит проделать большую работу, прежде чем я смогу получить какие-либо данные от Google, я очень далек от тестирования и мне просто интересно, может ли кто-нибудь сказать мне, будет ли это проблемой позже

Ответы [ 2 ]

6 голосов
/ 23 сентября 2011

Нет, это должно быть хорошо. Обратите внимание, что вы можете не получить точное то же самое значение, которое вы получили от Google Maps, поскольку это было бы выражено в десятичном формате. Тем не менее, это фактически физическая величина, и, таким образом, она больше подходит как число с плавающей запятой / двойное число / вещественное число (любой бинарный тип с плавающей запятой, который вам нравится), чем как десятичное число. (Десятичные числа больше подходят для искусственных количеств, особенно для валюты.)

Если вы посмотрите документацию для float и real, вы увидите, что real - это эффективно float(24) - 32-битный тип с плавающей запятой, такой же как float в C #.

РЕДАКТИРОВАТЬ: Как отмечалось в комментариях, если вы хотите, чтобы значимость, превышающая 7–8 цифр, обеспечиваемая float, была больше, то вы, вероятно, хотите вместо * C # 1015 *, что будет означать float(53) в SQL Server.

2 голосов
/ 23 сентября 2011

Эта ссылка:

http://msdn.microsoft.com/en-us/library/aa258876(v=sql.80).aspx

объясняет, что в SQL Server real является синонимом float(24), используя 4 байта данных.В .NET число с плавающей запятой одинарной точности также использует 4 байта, поэтому они в значительной степени эквивалентны:

http://msdn.microsoft.com/en-us/library/47zceaw7(v=vs.71).aspx

...