- 号运算符的bug!!

此公式验证没有问题,但是

image.png

在运行报表时却报错:image.png

改成 if($a==1,eval($asc), 0 - eval($asc))

或者if($a==1,eval($asc), - (eval($asc)) )

或者if($a==1,eval($asc), -1* eval($asc))

都是可以正常运行的。。。 这是什么鬼?

FineReport 84861712 发布于 2018-12-19 17:45
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
4
yets11Lv2高级互助
发布于2018-12-19 17:51

根据四则运算优先率,没有加括号,默认就是前面减后面,而没有第1个参数就会出错,反之你下面三个都符合要求

最佳回答
0
axingLv6专家互助
发布于2018-12-19 17:51(编辑于 2018-12-19 19:00)

eval($abc)返回的是一个字符结果,直接符号会出错

通过运算可以将数字型的字符转化为数字

比如你写公式:-'1',也会出现一样的错

blob.png

但是0-'1'就不会出错,直接在前加-号是求相反数,如果是字符型就会出错,而0-'1'则是减法运算,只要是数字的都可以

  • 84861712 84861712(提问者) 你的解释有个前提,你假设eval函数返回的一定是字符串; 在这个前提下,你的解释还有漏洞,因为 我前面的例子中 “ -( eval(...) ) ”的写法却是不报错的;(加个括号不可能自动把字串转为数字的) 事实上,我的报表中,那个eval返回的还就是数字,如何解释呢? 所以,我只能认为执行模块在最后计算公式时有bug。 另外,不知道哪里是帆软接收bug上报的渠道。。。在这里以提问的方式总不太合适。
    2018-12-19 20:20 
  • cherishdqy cherishdqy 回复 84861712(提问者) 报表-BUG反馈http://bbs.fanruan.com/forum-156-1.html
    2018-12-20 08:51 
  • 3关注人数
  • 452浏览人数
  • 最后回答于:2018-12-19 19:00
    请选择关闭问题的原因
    确定 取消
    返回顶部