代码之家  ›  专栏  ›  技术社区  ›  Hath

Sql Clr用户定义类型解析浮点数并失去精度

  •  0
  • Hath  · 技术社区  · 17 年前

    我有一个Clr用户定义类型,它接受由逗号分隔的字符串值。

    在转换为这种类型时,我失去了一点精度,我把它缩小到这行代码:

    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

    但原始值如下:

    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。CLRJourney就像你在.net上一样 像这样:

    'new dbo.CLRJourneyTime(nlinkjt , avglrwf , avglrwfjt ) as clrJT'
    
    1 回复  |  直到 17 年前
        1
  •  1
  •   Hath    17 年前

    好的,我刚刚发现浮点列无论如何只存储了大约4位小数。因此,这可能并不重要。