计算差异python

时间:2012-09-19 20:42:14

标签: python percentage

我正在尝试在我正在为我的工作建立的表单上工作,而且它似乎没有像我期望的那样工作。

我想计算两个字段ANL_CMA1_NUM_CLOSED_SALESANL_CMA2_NUM_CLOSED_SALES之间的百分比差异。

我认为我的数学是正确的,但我只得到单位数的结果,无论是正数还是负数,取决于输入的值。

我正在处理一个表单,我可以自定义权限级别和舍入,我将其四舍五入到最近的百分之一。任何人都可以帮我这个吗?

原始公式在其末尾没有-100) * 100)部分,但也无法正常工作。

FormSet.SetFieldValue(CurrentForm, "ANL_CHG_NUM_CLOSED_SALES", 
(((FormSet.GetFieldValue(CurrentForm, "ANL_CMA2_NUM_CLOSED_SALES") - 
FormSet.GetFieldValue(CurrentForm, "ANL_CMA1_NUM_CLOSED_SALES")) /    
 FormSet.GetFieldValue(CurrentForm, "ANL_CMA1_NUM_CLOSED_SALES")) -100) * 100)

2 个答案:

答案 0 :(得分:8)

您可能正在使用整数除法(即1/3 == 0),您需要浮点除法(即1./3 == 0.3333333)。

如果你稍微分解它也可能更容易理解 -

cma1 = FormSet.GetFieldValue(CurrentForm, "ANL_CMA1_NUM_CLOSED_SALES")
cma2 = FormSet.GetFieldValue(CurrentForm, "ANL_CMA2_NUM_CLOSED_SALES")
delta = float(cma2 - cma1) / cma1
FormSet.SetFieldValue(CurrentForm, "ANL_CHG_NUM_CLOSED_SALES", delta*100.0)

答案 1 :(得分:1)

您需要将值强制转换为float才能获得浮点除法(否则,Python会执行整数除法,将结果截断为整数)。

使用临时变量来保持理智:

cma1_closed_sales = FormSet.GetFieldValue(CurrentForm, "ANL_CMA1_NUM_CLOSED_SALES")
cma2_closed_sales = FormSet.GetFieldValue(CurrentForm, "ANL_CMA2_NUM_CLOSED_SALES")
pct_change = 100.0 * (cma2_closed_sales - cma1_closed_sales) / float(cma1_closed_sales)
FormSet.SetFieldValue(CurrentForm, "ANL_CHG_NUM_CLOSED_SALES", pct_change)