小编典典

SQL转换为浮点数而没有科学记数法

sql

如何在不使用科学计数法得出结果的情况下将十进制值转换为浮点数?

例如,如果我的值是0.000050小数,当我将其强制转换为浮点数时,我得到5E-05

我想看看 0.00005


阅读 207

收藏
2021-04-22

共1个答案

小编典典

这与转换为浮点数无关。它与转换为文本有关。您需要查看以下str()功能:

str( float_expression , total-width , number-of-decimal-places )

在哪里

  • float-expression 表示您认为的含义,
  • total-width 是所需的总字段宽度,包括符号,小数位等。
  • 小数位数 是显示的小数位数(0-16)。如果指定的值大于16,则格式化的值将在小数点后16位舍入(不舍入)。

在您的情况下,类似:

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’ )

2021-04-22