Sql server 的float和real类型会产生科学计数法,如何消除科学计数法
sqlserver 查询的 float 类型 如果是0.00000000001的话,会被显示为1E-11,请问怎么才能让查询出的结果显示为正常显示方式而不是科学计数法?
答案:
float 和 real 用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。
解决float科学计数的问题只能靠转换,decimal(12,11)会自动补全到小数点后11位。
您可以试试这样转化: 先建一个测试表:
CREATE TABLE dbo.sci_notation ( num float ) INSERT INTO dbo.sci_notation VALUES (0.0000000001)
因为不清楚所有表中float的小数位,所以转换成decimal尽量大点,我选了decimal(38,28),保留28位小数。先转成varchar,然后对varchar进行去0操作。
select replace(rtrim(replace(convert(varchar,cast(num as decimal(38,28))),'0',' ')),' ','0') from dbo.sci_notation ----------------------------- (No column name) 0.0000000001 -----------------------------