将Talend表达式解码为Java公式

时间:2016-02-04 23:37:09

标签: java talend

我们在Open Studio中有一个Talend作业,表达式中包含以下公式:

row1.Avg_Cost==null?null:
(
  (
     (row1.IND_Price==null||row1.Avg_Price==null)?
     row1.Avg_Cost:(
                     row1.Avg_Cost.multiply(
                                                (row1.Avg_Cost.multiply(new  BigDecimal(0.6))).add(row1.IND_Price.multiply(new BigDecimal(0.4)))
                                               ).divide(row1.Avg_Price,   java.math.RoundingMode.HALF_UP)
                    )
 ).subtract(row1.IND_Spending==null?(new BigDecimal(0.0)):row1.IND_Spending)
)           

我解码了这个公式并运行了一个简单的java程序:

Avg_Revenue = AVG_COST *((AVG_COST + IND_PRICE)/ AVG_PRICE)

当我插入以下值时:

   double AVG_COST = 26363.05462;
    double AVG_PRICE = 26269.28416;
    double IND_SPENDING = 3101;
    double IND_PRICE = 26083;

Talend给了我:23243.73808作为收入。    解码的java程序给了我:26550.2653

所以,希望有人在这里可以指出我在解码论坛时做错了什么?

TIA

1 个答案:

答案 0 :(得分:0)

想出来。错过了成本和价格分别乘以0.6和0.4的事实。完全不同。 现在,为什么它以这种方式编码,任何人都可以猜测 - 这里没有业务逻辑。

是否有Java BigDecimal /转换逻辑?