计算百分比差python

2024-06-28 11:16:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图让一些东西在我为我的工作建立的表格上发挥作用,但它似乎并没有按照我期望的方式工作。在

我想计算两个字段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)

Tags: 方式差异num表格百分比closedsalesformset
2条回答

在需要浮点除法(即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)

您需要将值强制转换为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)

相关问题 更多 >