嗨,我有一个关于状态的问题。示例:availBudget=1000.00和totBaseCost=1000.01它必须是未预算的,但我认为它只得到整数。在
totBaseCost = mbo.getDouble("TOTALBASECOST")
totBaseCost1 = "%.2f" % float(totBaseCost)
#totBaseCost1 = "%.2f" % totBaseCost
budgetSet = mbo.getMboSet("BUDGET")
availBudget = 0
if budgetSet is not None:
budgetMbo = budgetSet.getMbo(0)
totBudgetAmount = budgetMbo.getFloat("C1BUDTOTCOST")
estTotCost = budgetMbo.getMboSet("C1ESTTOTCOSE").sum("LINECOST")
comTotCost = budgetMbo.getMboSet("C1COMMITTED").sum("LINECOST")
actTotCost = budgetMbo.getMboSet("C1ACTTOTCOST").sum("LINECOST")
#Available Budget
availBudget = float(totBudgetAmount) - float(estTotCost) - float(comTotCost) - float(actTotCost)
availBudget = "%.3f" % availBudget
if availBudget < 0:
availBudget = abs(availBudget)
if (totBaseCost1) > availBudget and availBudget <> 0:
mbo.setValue("C1BUDGETSTATUS","",11L)
mbo.setValue("C1BUDGETSTATUS","UNBUDGETED",11L)
elif (totBaseCost1) <= availBudget:
mbo.setValue("C1BUDGETSTATUS","",11L)
mbo.setValue("C1BUDGETSTATUS","BUDGETED",11L)
elif str(totBaseCost1) == "0.00" and str(availBudget) <> "0.00":
mbo.setValue("C1BUDGETSTATUS","",11L)
mbo.setValue("C1BUDGETSTATUS","BUDGETED",11L)
Python执行类型强制,这可能是您的问题。如果有
0
(一个整数)的比较或赋值,请尝试使用0.0
(一个浮点数)。在使用psdi.util.MXMath类执行成本计算,因为它在幕后使用BigDecimal。 请看这个entry以了解不使用浮点数/双精度数进行货币计算的原因。在
另外,正如Dex所指出的,您应该在mboSet上使用isEmpty()方法来确定是否获取记录。在
相关问题 更多 >
编程相关推荐