如何删除小数点后的零作为 SSRS 中的表达式
How to remove zeroes after the decimal point as an expression in SSRS
我的 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 报告。
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,我如何将我的数字格式化为小数点后的最后一个非零数字和 select 较低的值,而不是1.07 为 1.06。我想如果我使用 Ceiling 或 Floor,它会给我整数部分。
试试这个:
=ROUND(1.339,2,MidpointRounding.ToEven)
这给出:1.34
和
=ROUND(1.065,2,MidpointRounding.ToEven)
给出:1.06
让我知道这是否有帮助。
我的 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 报告。
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,我如何将我的数字格式化为小数点后的最后一个非零数字和 select 较低的值,而不是1.07 为 1.06。我想如果我使用 Ceiling 或 Floor,它会给我整数部分。
试试这个:
=ROUND(1.339,2,MidpointRounding.ToEven)
这给出:1.34
和
=ROUND(1.065,2,MidpointRounding.ToEven)
给出:1.06
让我知道这是否有帮助。