【问题标题】:SSRS expression to format two decimal places does not show zeros格式化两位小数的 SSRS 表达式不显示零
【发布时间】:2014-01-17 13:48:23
【问题描述】:

我正在使用以下表达式来格式化我的值以仅显示两位小数。如果值不为 0,则可以正常工作。但是,当值为 0 时,它不显示 0。

例如。 使用的表达方式

=Format(Fields!CUL1.Value, "##.##")

如果 CUL1.Value 为 2.5670909,则报告中显示的值为 2.56(这太棒了!) 如果 CUL1.Value 为 0.006709,则不显示任何值(我希望它显示 0.00) 如果 CUL1.Value 为 0,则不显示任何值(我想显示 0)

谢谢。

【问题讨论】:

  • 您有具体的舍入要求吗?我希望 2.5670909 舍入到 2.570.006709 舍入到 0.01,而这正是当你将您的表达式应用于您的数据。您是否有效地截断了它们?你能确认一下吗?
  • Microsoft 没有正确记录这一点,但您是否尝试过使用“#0.##”代替?
  • 回答伊恩的问题。我没有具体的舍入要求。我只想显示两位小数。是的,我有效地截断了值,但是当值为 0.006709 时,什么都没有显示!

标签: service reporting-services reporting


【解决方案1】:

如果你想要它作为一个字符串使用:

=Format(Fields!CUL1.Value, "F2")

作为数字使用:

=FormatNumber(Fields!CUL1.Value, 2)

这将确保它以数字的形式正确导出为 excel。

【讨论】:

  • 它认为值得注意的是,这会将值转换为字符串。导出到 Excel 时不再是数字... 转到属性窗口 (F4) 并找到数字,然后输入 N2 作为格式(或 N0 是您不想要小数位)将在 Excel 中生成一个数字。
  • 改用 FormatNumber(Fields!CUL1.Value,2)
  • 在使用 Format() 之前,我必须在我的字段上执行 CDec()
  • 当我在这里使用 cDbl 时为我工作:FormatNumber(Sum(cDbl(Fields!CUL.Value)), 2)。
【解决方案2】:

您需要确保始终显示小数点右侧的第一个数字。在自定义格式字符串中,# 表示如果存在则显示数字,0 表示总是显示某些内容,以 0 作为占位符。

因此,在您的情况下,您将需要以下内容:

=Format(Fields!CUL1.Value, "#,##0.##")

这句话:如果存在则显示2个DP,对于非零部分总是显示最低部分,并使用作为分组分隔符。

这是它在您的数据上的外观(我还添加了一个很大的值以供参考):

如果您对分离数千、数百万等不感兴趣,只需按照 Paul-Jan 的建议使用 #0.##

Custom Numeric Format Strings 的标准文档是您最好的参考。

【讨论】:

  • 在使用 Format() 之前,我必须在我的字段上执行 CDec()
  • 如果整数通过(例如:35 或 35.00),我已使用 =Format(Fields!CUL1.Value, "#,##0.00") 的格式将小数位添加为 .00
  • 如何让2.5显示为2.50?
【解决方案3】:

如果您希望始终在小数点后显示某个值,例如 "12.00""12.23" 然后像下面这样使用,它对我有用

FormatNumber("145.231000",2) 将显示 145.23

FormatNumber("145",2) 将显示 145.00

【讨论】:

    【解决方案4】:

    Format(Fields!CUL1.Value, "0.00") 会更好,因为 @abe 建议他们想要显示 0.00 ,如果值为 0,"#0.##" 将显示 "0"

    【讨论】:

      【解决方案5】:

      实际上,我需要以下内容...去掉小数而不四舍五入,因此“12.23”需要显示为“12”。在 SSRS 中,不要将数字格式化为百分比。保留默认格式(不应用格式),然后在表达式中执行以下操作:=Fix(Fields!PctAmt.Value*100))

      将数字乘以 100,然后在 SSRS 中应用 FIX 函数,该函数仅返回数字的整数部分。

      【讨论】:

        【解决方案6】:

        请尝试以下代码sn-p,

        IIF(Round(Avg(Fields!Vision_Score.Value)) = Avg(Fields!Vision_Score.Value), 
        Format(Avg(Fields!Vision_Score.Value)), 
        FORMAT(Avg(Fields!Vision_Score.Value),"##.##"))
        

        希望对你有帮助,谢谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多