反馈已提交

网络繁忙

除数被除数为零的处理

  • 文档创建者:文档助手1
  • 历史版本:13
  • 最近更新:Fay 于 2023-12-01
  • 1. 概述

    1.1 问题描述

    在报表设计时,若使用除法运算,可能涉及到「除数」或「被除数」为 0 的情况,此时默认 FineReport 的计算规则如下表所示:

    被除数
    除数
    0非 00
    非 00∞ 或 -∞
    000

    这样显示没有错,但在实际应用中,经常需要对「除数为 0 」或者「除数被除数均为 0」 的情况进行处理,希望在这两种情况下提示「无法计算」或避免结果为「无穷大」。如下图所示:

    1617245188914991.png

    1.2 解决思路

    • 使用 IF 公式判断除数与被除数是否均为 0,为 0 时提示“can’t caculate”。

    • 使用「条件属性新值」修改结果为「无穷大」的值。

    2. 示例

    2.1 准备数据

    新建普通报表,新建内置数据集 Embedded1,添加「被除数」和「除数」两个「整数」类型的字段,填入一些整数,如下图所示:
    Snag_a903364.png

    2.2 设计报表

    将「被除数」和「除数」分别拖入 A2、B2 单元格,将 A2 单元格的「数据设置」修改为「列表」。在 C2 单元格插入「商」的公式:A2/B2。表格样式如下图所示:

    此时预览报表,是使用 FineReport 默认的计算规则。结果如下图所示:
    Snag_a9348e1.png

    2.3 设置公式

    2.3.1 被除数与除数均为 0

    被除数和除数均为 0 时,实际应用中除数显示“can’t caculate”,否则计算 A2/B2。此时可将 C2 单元格的公式改为:IF(A2=0&&B2=0,"can't caculate",A2/B2),结果如下图所示:

    Snag_aad7d21.png

    2.3.2 除数为 0

    除数为 0 时,商为「无穷大」,希望不需要计算,否则计算 A2/B2,可使用公式:IF(B2=0,"0",A2/B2),结果就显示为 0 了。在本例中,可将 C2 单元格的公式修改为:IF(A2=0&&B2=0,"can't caculate",IF(B2=0,"0",A2/B2))。结果如下图所示:

    Snag_ab4a8e3.png

    2.4 设置条件属性新值 

    当商为「无穷大」时,无穷大 ∞ 对应的真实值其实是 Infinity ,可以利用「条件属性>新值」改变单元格值。

    注:Infinity 首字母必须大写,小写无效。

    选中 C2 单元格,点击右侧属性面板,添加一个条件属性,选择「新值」属性,设置值为「字符串」 0 (可根据情况选择其他值类型)。添加两个「普通」条件,用 OR 连接,即当单元格值为 Infinity (∞)或 -Infinity (-∞)时,单元格值改变为 0。

    如下图所示:

    1617246660851488.png

    这样做的一个好处是利用条件属性可以批量设置,也就是说在模板中出现多个可能计算结果为无穷大的地方,我们只需要全部选中,右键选择条件属性,即可以一次性设置成功,不需要反复利用 IF 公式来判断了,可以省下很多时间,大大提高我们的开发效率。

    2.5 效果预览

    2.5.1 PC 端

    保存模板,效果与 1.1 节中相同。

    2.5.2 移动端

    App 与 HTML5 端效果相同,如下图所示:


    3. 模板下载

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\除数被除数为零时的处理.cpt

    点击下载模板:除数被除数为零时的处理.cpt

    附件列表


    主题: 报表应用
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持