美文网首页
二十五、numVar=2,但${numVar/1000}为什么是

二十五、numVar=2,但${numVar/1000}为什么是

作者: 此间有道 | 来源:发表于2020-11-15 18:43 被阅读0次

一、问题描述

上周四研发使用EDI的数据转换时发现el表达式计算结果不正确,即使用el表达式进行除法的时候结果不对。例如:${numVar/1000},其中通过日志里观察numVar的变量值为2,但是结果确实0.

二、定位

  1. 在数据转换模块增加测试用例,发现结果正常为0.002。
  2. 推测numVar类型不对,通过观察流程发现该值是从数据库里读出来的。
  3. 通过远程断点发现该值类型为BigDecimal类型,经测试发现如果numVar是Decimal类型,其运算结果就是0.

三、源码分析

public class NumberOperations {
    public static final Number div(TypeConverter converter, Object o1, Object o2) {
        if (o1 == null && o2 == null) {
            return LONG_ZERO;
        }
        if (isBigDecimalOrBigInteger(o1) || isBigDecimalOrBigInteger(o2)) {
            return converter.convert(o1, BigDecimal.class).divide(converter.convert(o2, BigDecimal.class), BigDecimal.ROUND_HALF_UP);
        }
        return converter.convert(o1, Double.class) / converter.convert(o2, Double.class);
    }
}

el计算时如果发现除数和被除数有一个BigDecimal时,就会执行converter.convert(o1, BigDecimal.class).divide(converter.convert(o2, BigDecimal.class), BigDecimal.ROUND_HALF_UP)。即执行除法后四舍五入取整。

四、解决方案

${numVar / 1000} 改为${numVar.doubleValue() / 1000}

相关文章

  • 二十五、numVar=2,但${numVar/1000}为什么是

    一、问题描述 上周四研发使用EDI的数据转换时发现el表达式计算结果不正确,即使用el表达式进行除法的时候结果不对...

  • 我为什么还没有千万?

    我为什么还没有1000万元? 1.我是上班族,不可能拥有1000万。 2.我是女得,赚钱是男人得事! 3.我没有做...

  • 在java中为什么变量1000 = 1000 返回false,但

    这可能是我们经常会遇困惑的地方。让我们一起探讨一下这个话题。 ps:题目的意思是指定义相同内容的不同变量之间的==...

  • 第三天

    回答1: 2000/2=1000 1000*70%+1000*110%=1800 所以还剩资金1800 回答2: ...

  • 我还欠你一个吻

    对于女人来说,二十五岁是一个坎,无论你是否承认。 二十五岁以前,你还可以自称为女生、或者是女孩,但等到二十五周岁的...

  • 花最少的时间做好营养辅食

    为什么要重视宝宝的吃饭问题? 宝宝脑部发育黄金1000天到底是什么 生命最初1000天,即从怀孕至2岁,也称机遇窗...

  • 第二天

    1.每只股投入资金:2000÷2=1000 1000(1-0.3)+1000(1+0.1)=1800 2.每只股投...

  • 写作新手必看|大纲模板3.0版 确认过眼神 这波操作稳

    关于大纲,之前我已经写过一篇同样是写大纲 为什么你月入1000别人月入10000? 但那篇文章讲得更多的是方法论,...

  • 开启富而喜悦的人生,从成长、自律开始!

    今天是2022年9月4日,是我学习成长1000天打卡的第923天。 今天继续学习《富爸爸杠杆致富》 第2章 为什么...

  • 2/1000

    #做减法# 是时候该砍掉分散精力的业务了 哪怕危及到日常生活都行 必须得做剪发 这小富即安的钱啊 老子不挣了 #我...

网友评论

      本文标题:二十五、numVar=2,但${numVar/1000}为什么是

      本文链接:https://www.haomeiwen.com/subject/snanbktx.html