? ? ? ? String vs[] = value.split("\\/");
? ? ? ? BigDecimal v1 = map.get(vs[0]);
? ? ? ? BigDecimal v2 = map.get(vs[1]);
? ? ? ? BigDecimal x = v1.divide(v2);
? ? ? ? map.remove(vs[0]);
? ? ? ? map.remove(vs[1]);
? ? ? ? String uuid = getUUID();
? ? ? ? map.put(uuid, x);
? ? ? ? str = str.replace(value, uuid);
? ? ? ? return str;
? ? }
}
最近在开发公司的绩效系统,老板又很抠门,不想购买市面上的绩效系统。。于是乎,苦逼的我又开始了苦逼的编程……
系统里面涉及到报表,而各员工间的绩效以及实发工资的算法每隔一段时间就会更新,所以不可能做到将算法写进源码编译,需要报表公式进行计算(当然,报表公式系统需要另行开发,这里不描述)。
以上是JAVA代码,其思想是将公式字中的参数当作字符串来看待,并不是当作纯粹的数字。每次运算时,只进行二元运算,运算之后将数据保存,再删除原数据表中的数据。如此循环,无需考虑括号的限制了。
在实现代码时,考虑了直接使用float或者是double类型,但是在最终显示结果是,两个类型精度都会产生精度上的丢失,所以最终考虑使用BigDecimal类型,也算是做长期运行考虑吧。
其中有很多需要优化的地方,敢兴趣的朋友可以留言交流……