我正在尝试在我正在为我的工作建立的表单上工作,而且它似乎没有像我期望的那样工作。
我想计算两个字段ANL_CMA1_NUM_CLOSED_SALES
和ANL_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)
答案 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)