我正在制作Crystal报表中的报表,该报表总结了同年激活和停用的客户。我的报告看起来像这样:
<table border=1>
<tr>
<td>Customer</td>
<td>Create Date</td>
<td>End Date</td>
<td>Days Active</td>
<td>Months Billed</td>
<td>Invoice Amount</td>
<td>Average Invoice Amount</td>
<td>3 Year Lost Revenue</td>
<td>5 Year Lost Revenue</td>
</tr>
<tr>
<td>Customer 1</td>
<td>11/20/2014</td>
<td>08/05/2015</td>
<td>258</td>
<td>9</td>
<td>$2200.00</td>
<td>$244.44</td>
<td>$6600.00</td>
<td>$12466.67</td>
</tr>
</table>
基本上我遇到的问题是3年和5年的收入损失并没有正确地进行四舍五入。
我将解释我是如何计算所有内容的,也许有人可以解释为什么这两列是四舍五入的。
好的,所以客户,创建日期和结束日期都是从数据库表中提取的。
活跃天数=结束日期 - 创建日期
月结算=上限(活跃天数/ 30)
对于发票金额,我有一个基本上说的公式:
如果isnull(我正在拉动的表中的列)然后是0
否则使用发票中的列运行总计
平均发票金额=发票金额/月结算
3年收入损失=(36 *平均发票金额) - 发票金额
5年收入损失=(60 *平均发票金额) - 发票金额
我在表中用于发票金额,平均发票以及3年和5年收入的数字是我得到的实际数字。因此,开帐单的月份,发票金额和平均发票金额都是正确的。
但正如你所见
($ 244.44 * 36) - $ 2200 = $ 6599.84
($ 244.44 * 60) - $ 2200 = $ 12466.40
这两个列的格式也相同,但不知怎的,它们都是不同的四舍五入...任何想法我正在做什么让它像这样圆?
谢谢!
答案 0 :(得分:1)
您可能忘记舍入Average Invoice Amount
的中间值。 2200/9 = 244.4444444 ...,但您的手动计算仅使用244.44 - 确定结果会有所不同。
答案 1 :(得分:0)
您可以通过格式化字段来简单地格式化十进制字段,而不是应用新逻辑来解释原因。 Crystal报表具有根据数据类型的字段格式化字段的功能。
以下文字取自link
实际上,您可以在文本框中选择字段,右键单击并格式化。但是,这是做百分比的更好方法。
这将为您提供百分号,而无需使用文本框。
Check this link too for visualizing
https://www.webucator.com/blog/2010/05/crystal-reports-rounding-function/