SQL 服务器:将 FLOAT 转换为 NVARCHAR,最高精度,无科学计数法
SQL Server: Convert FLOAT to NVARCHAR, maximum accuracy, without scientific notation
不使用科学计数法,我需要将 FLOAT
转换为字符串,不显示科学计数法,并捕获所有可能的精度。
例如,当我执行SELECT 1E0 / 1346E0
时,我得到以下结果:
这就是 SQL 服务器默认显示 FLOAT
值的方式。
在这种情况下,它显示 18 位小数,这比 STR
函数可以提供的多。
它也不添加任何尾随零。
如果 SQL Server Management Studio 可以执行此操作,我是否也可以在我的代码中进行此转换?
我需要不惜一切代价避免使用科学计数法,即使小数点后有 20 个前导零。长字符串不是问题。
不幸的是,CONVERT
函数没有提供我需要的功能,即使是样式 3
尝试format()
SELECT
1E0 / 1346E0
, 格式(1E0 / 1346E0,'N18')
declare @float float = 0.000742942050520059
select cast(cast(@Float as decimal(38,35)) as varchar(200))
如前所述,format
也有效,尽管我不是它的超级粉丝,因为它是一种重击的 CLR。不过一次性就好了。
不使用科学计数法,我需要将 FLOAT
转换为字符串,不显示科学计数法,并捕获所有可能的精度。
例如,当我执行SELECT 1E0 / 1346E0
时,我得到以下结果:
这就是 SQL 服务器默认显示 FLOAT
值的方式。
在这种情况下,它显示 18 位小数,这比 STR
函数可以提供的多。
它也不添加任何尾随零。
如果 SQL Server Management Studio 可以执行此操作,我是否也可以在我的代码中进行此转换?
我需要不惜一切代价避免使用科学计数法,即使小数点后有 20 个前导零。长字符串不是问题。
不幸的是,CONVERT
函数没有提供我需要的功能,即使是样式 3
尝试format()
SELECT 1E0 / 1346E0 , 格式(1E0 / 1346E0,'N18')
declare @float float = 0.000742942050520059
select cast(cast(@Float as decimal(38,35)) as varchar(200))
如前所述,format
也有效,尽管我不是它的超级粉丝,因为它是一种重击的 CLR。不过一次性就好了。