Если у вас есть float в MSSQLServer, к чему вы это сопоставляете в .NET?
Можно ли преобразовать его в Double или потерять номера?
Если у вас есть float в MSSQLServer, к чему вы это сопоставляете в .NET?
Можно ли преобразовать его в Double или потерять номера?
SQLServer float
и С#/VB double
имеют одинаковое представление. Это правильное отображение. То, что вы не хотите делать, это сопоставить SQL Server float
с С#/VB float
, поскольку это может привести к потере точности. SQL Server real
отображается на С#/VB float
.
Определения типа плавающего и реального типов T-SQL можно найти в MSDN. С# double definition можно найти на MSDN, а также float определение.
Отъезд:
В вашем случае родной тип SQL Server float сопоставляется с SQL Server CLR SqlDouble, а затем Двойной в .Net
Обновление (май 2016 года):
Обновленная версия документа msdn: Отображение данных параметра CRL
С# имеет тип float, но он также будет преобразовывать в double.
Из моего воспоминания большая часть инструментов ORM отобразит его в десятичный тип, который не потеряет точность, как двойной или плавающий.
Это зависит от размера поплавка SQL. Для простого "float", который эквивалентен float (53), вам нужно использовать С# double. Для float (24) или ниже С# float будет достаточно или двойной будет работать.
Автоматический код, созданный Microsoft XSD, преобразует SQL-float (по умолчанию float) в С# double.
Поэтому вы можете предположить, что это не большая ошибка.
Пока вы не будете работать с float с размером по умолчанию.