如何在不以科学计数法获得结果的情况下将十进制值转换为浮点数?
例如,如果我的值是0.000050
小数,当我将它转换为浮点数时,我得到5E-05
我想看看0.00005
如何在不以科学计数法获得结果的情况下将十进制值转换为浮点数?
例如,如果我的值是0.000050
小数,当我将它转换为浮点数时,我得到5E-05
我想看看0.00005
这与转换为浮点数无关。它与转换为文本有关。您需要查看str()
函数:
str( float_expression , total-width , number-of-decimal-places )
在哪里
在您的情况下,类似于:
declare @value float = 0.000050
select str(@value,12,6)
应该做你。
编辑注意:该str()
功能不会以科学计数法显示任何内容。如果问题是您想从十进制值中修剪尾随零,您可以做两件事:
使用format()
函数(仅限 SQL Server 2012):
declare @x decimal(18,6) = 123.010000
select @x as x1 ,
format(@x,'#,##0.######') as x2 , -- all trailing zeroes trimmed
format(@x,'#,##0.000###') as x3 -- min of 3, max of 6 decimal places shown
使用replace()
和trim()
。适用于任何版本的 SQL Server。
declare @x decimal(18,6) = 123.010000
select @x as x1 ,
replace( rtrim(replace(convert(varchar(32),@x),'0',' ')) , ' ' , '0' )
ALTER FUNCTION [dbo].[fnExpStringToDecimal]
(
@Number AS varchar(50)
) Returns Decimal(18,7)
BEGIN
RETURN (SELECT IIF(CHARINDEX ('E', @Number)> 0,CAST(SUBSTRING(@Number, 1, CHARINDEX ('E', @Number)-1)AS DECIMAL(18,7)) * POWER( 10.0000000,CAST(SUBSTRING(@Number, CHARINDEX ('E', @Number)+1, LEN(@Number)) AS DECIMAL(18,7))), @Number))
END
我知道这不是正确的答案,但是如果您正在搜索从 VARCHAR 科学记数法到 DECIMAL 的转换并像我一样登陆这里,您可以在 SQL SERVER 上执行以下操作:
SELECT CAST('4.51432543543E-4' AS FLOAT)
(在 2012 年以上测试)