これがシナリオです。
割引を適用するためのコードを書いていますが、さまざまな問題が発生しています。
私の注文には次のものがあると仮定し、営業担当者として、この注文に対して23.47ポンドの割引を顧客に提供することにしました。
私は3つの広告申込情報を持っており、そのうち2つは150.00ポンド、1つは10.00ポンドです。注文の総額は£310.00です
したがって、各ラインアイテムの%discountを計算する必要があります(外部インターフェイスは注文レベルの割引に対応できず、ラインアイテムの割引のみに対応できるため)。また、外部インターフェイスは、Discount%フィールドの小数点以下1桁のみを処理できます。
論理:
- 注文の合計(割引前)を計算します。それは£310.00になります。
- 割引額を注文総額のパーセンテージとして計算します。つまり、£23.47/£310.00です。
割引率は7.570967741935484%になります。ただし、これは7.6%に四捨五入する必要があります。そうすると、各広告申込情報の割引額が高くなります。各ラインアイテムの割引額は高くなります。そして、私が最終的に与える割引の合計は23.56ポンドで、これは私が意図したものである23.47ポンドよりも0.08ポンド多くなっています。
各ラインアイテムは£11.36、£11.36、£0.76の割引を受けるはずですが、私は£11.40、£11.40、£0.76を与えることになります。
必要なのは、各ラインアイテムの四捨五入で発生する「エラー」を計算し、適用可能な最低価格のアイテムのエラーを補正して、割引価格が何に近くなるかを確認することです。私は与えるつもりでした(しかし、それは切り上げられるべきであり、決して切り下げられるべきではありません)。
各ラインアイテムに割引を適用する場合、適用する必要のある残りの割引額を「覚えておく」必要がありますか?
次のような擬似コード。
iterating through each line item
//first line item where I have given more discount than intended. 4p more. So, the remaining discount is not £12.11 but actually £12.07
//Calculate the discount% for remaining line items, i.e.,
//And, I am confused :-)
これを行うための最良の方法は何でしょうか?
PS:これがここにある必要があるかどうかはわかりません。ただし、SEサイトに該当しない場合は、私を正しい方向に向けるか、削除してください。