1

我正在尝试在我为我的工作构建的表单上工作,但它似乎并没有按照我期望的方式工作。

我想计算两个字段之间的百分比差异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)
4

2 回答 2

8

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

如果您将其分解一下,也可能更容易理解-

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)
于 2012-09-19T20:44:50.303 回答
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)
于 2012-09-19T20:50:04.297 回答