将Talend表达式解码为Java公式
我们在Open Studio中有一个Talend作业,表达式中的公式如下:将Talend表达式解码为Java公式,java,talend,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.
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程序:
平均收入=平均成本*((平均成本+独立价格)/平均价格)
当我插入以下值时:
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找到了答案。忽略了成本和价格分别乘以0.6和0.4的事实。让一切变得不同。 现在,为什么它是这样编码的,是任何人的猜测-这里没有业务逻辑
有Java BigDecimal/转换逻辑吗?找到了。忽略了成本和价格分别乘以0.6和0.4的事实。让一切变得不同。 现在,为什么它是这样编码的,是任何人的猜测-这里没有业务逻辑 是否存在Java BigDecimal/转换逻辑