我的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位数(如果这样的数学运算给出了十进制数字的数量)。
结果如下:
现在这里是棘手的部分: 抓取数据集后面的代码执行一轮并转换为十进制,然后显示为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");
所以这会给我:
你可以看到我是否使用格式数字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它会给我整数部分。
答案 0 :(得分:2)
试试这个:
=ROUND(1.339,2,MidpointRounding.ToEven)
这给出:1.34
并且
=ROUND(1.065,2,MidpointRounding.ToEven)
给予:1.06
如果这有用,请告诉我。