2008-11-05 2 views
0

У меня есть определенный пользователем Clr тип, который берет строку значений, разделенных запятой.Sql Clr User Defined Тип разбора поплавка и потери точности

Я теряю немного точности при преобразовании этого типа, я сузили его до этой строки кода:

cast(cast(nlinkjt as nvarchar(100)) + ',' +cast(avglrwf as nvarchar(100)) + ',' + cast(avglrwfjt as nvarchar(100)) as dbo.CLRJourneyTime) as clrJT 

выходной = 29.9376,5.29633e-005,0.00158559

но значения Orignal подобны так:

nlinkjt = 29.9376097988521 = cast(nlinkjt as nvarchar) = 29.9376 
avglrwf = 5.29632961843163E-05 = cast(avglrwf as nvarchar) = 5.29633e-005 
avglrwfjt = 0.00158559449482709 = cast(avglrwfjt as nvarchar) = 0.00158559 

как я могу преобразовать поплавки в строку в полном объеме?

Или есть другой способ объявить новый dbo.CLRJourneyTime, как вы бы в .net так:

'new dbo.CLRJourneyTime(nlinkjt , avglrwf , avglrwfjt) as clrJT' 

ответ

1

Хорошо, Только что узнал, что столбец с плавающей точкой хранятся только около 4 знаков после запятой в любом случае .. так что это, вероятно, не имеет значения.

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