如何在小数点后删除零作为SSRS中的表达式

时间:2015-10-23 16:11:13

标签: vba reporting-services ssrs-2008-r2 ssrs-expression

我的SSRS报告中的一个文本框中有以下表达式:

=IIF(IsNothing(Lookup(Trim(Fields!venta_Cod_vendedor.Value) & "-" & ReportItems!Textbox233.Value, Fields!AgregarVentas.Value, Fields!venta_prom_sem.Value, "EfectividadDeFrecuencias_Ventas")) = True

,"0"

,IIF(Lookup(Trim(Fields!venta_Cod_vendedor.Value) & "-" & ReportItems!Textbox233.Value, Fields!Agregar.Value, Fields!total_cant_pos.Value, "EfectividadDeFrecuencias_Total") <> "0"

,FormatNumber(Lookup(Trim(Fields!venta_Cod_vendedor.Value) & "-" & ReportItems!Textbox233.Value, Fields!AgregarVentas.Value, Fields!venta_frecuencia.Value, "EfectividadDeFrecuencias_Ventas")
/ Lookup(Trim(Fields!venta_Cod_vendedor.Value) & "-" & ReportItems!Textbox233.Value, Fields!Agregar.Value, Fields!total_cant_pos.Value, "EfectividadDeFrecuencias_Total"),2)

,"0"))

该分区将给我一个int64号码,15位数(如果这样的数学运算给出了十进制数字的数量)。

结果如下:

enter image description here

现在这里是棘手的部分: 抓取数据集后面的代码执行一轮并转换为十进制,然后显示为Crystal Report。

dr.venta_prom_sem = (Convert.ToDouble(dr.total_cant_pos) != 0 ? (Math.Round((Convert.ToDouble(dr.venta_frecuencia) / Convert.ToDouble(dr.total_cant_pos)), 2)).ToString() : "0");

所以这会给我:

enter image description here

你可以看到我是否使用格式数字1.3将转换为1,30这将是错误的,与1(1,00)相同。现在1,339 ...等会给我1,34,这很好。

但是检查1.065,FormatNumber会给我1.07而不是1.06。

所以问题是,如何将我的数字格式化为小数点后的最后一个非零数字,如果(在这种情况下)第三个值为5,则选择较低的值,而不是1.07为1.06。我想如果我使用Ceiling或Floor它会给我整数部分。

1 个答案:

答案 0 :(得分:2)

试试这个:

=ROUND(1.339,2,MidpointRounding.ToEven)

这给出:1.34

并且

=ROUND(1.065,2,MidpointRounding.ToEven)

给予:1.06

如果这有用,请告诉我。