1

自分の仕事のために作成しているフォームで何かを機能させようとしていますが、期待どおりに機能していないようです。

ANL_CMA1_NUM_CLOSED_SALES2つのフィールドとの差の割合を計算したいと思いますANL_CMA2_NUM_CLOSED_SALES

私の計算は正しいと思いましたが、入力された値に応じて正または負の1桁の結果しか得られません。

権限レベルと丸めをカスタマイズできるフォームに取り組んでおり、これを100分の1に丸めています。誰かがこれを手伝ってくれますか?

元の数式-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 に答える