数字格式为负十进制数给出 + 号

Number format is giving + sign for negative decimal number

我正在尝试用 +/- 符号格式化一个小数点后一位数字的十进制数。我正在使用以下查询

select FORMAT(-0.034, '+0.0;-0.0')

我在输出中得到 +0.0 而不是 -0.0

在类似情况下,可以选择使用表达式(变量)作为 format 参数的值:

SELECT FORMAT(
   [Number], 
   CONCAT(
      '+0.0;-0.0;',  
       CASE 
          WHEN [Number] < 0 THEN '-0.0'
          WHEN [Number] > 0 THEN '+0.0'
          ELSE ' 0.0'
       END
   )
) AS [Result]
FROM (VALUES
   (-0.034),
   (0.034),
   (0),
   (0.153),
   (-0.153)
) v ([Number])

结果:

Result
------
-0.0
+0.0
 0.0
+0.2
-0.2

@Zhorov 的解决方案存在一个小问题,因为我得到了双负号,例如输入数字为“-0.153”的“--0.2”。我尝试使用其他格式化选项但无法解决此问题,因此我使用@Zhorov 建议的 CASE 表达式创建了另一个解决方案。

SELECT [Number],
case 
when [Number] < 0 then '-' + FORMAT([Number],'0.0;0.0') 
when [Number] > 0 then '+' + FORMAT([Number],'0.0;0.0') 
else '0.0' end
as [Correct-Output],
FORMAT(
   [Number], 
   CASE 
      WHEN [Number] < 0 THEN '-0.0'
      WHEN [Number] > 0 THEN '+0.0'
      ELSE ' 0.0'
   END   
) AS [Result1],
FORMAT(
   [Number], 
   CASE 
      WHEN [Number] < 0 THEN '+0.0;-0.0'
      WHEN [Number] > 0 THEN '+0.0;+0.0'
      ELSE ' 0.0'
   END   
) AS [Result2]
FROM (VALUES
   (-0.034),
   (0.034),
   (0),
   (0.153),
   (-0.153)
) v ([Number])

输出