MySQLデータベースを使用してPHPでコーディングされたWebアプリケーション。分数の合計と正数の丸め誤差を相殺
私は、コストを分割するときに、多くの人の異なるコストを計算するシステムを持っています。たとえば、人物Aは、10と人物を購入します。人物B、C、およびDは、コストを分割する必要があります。
システムは、これが行われる場合、しかしながらB、CおよびD
ため10/3の者 10及び負レコードの正レコードを登録し、そのためべきです。 B、CおよびDは、すべて丸めた後に-3.33を有する。どちらのコースはで、が合計で10になりません。この問題についてはどのような方法がありますか?最適解は人が何を得るのかをランダム化する。私はちょうど最後の人の債務は10 - (A + B)
なりましょう、しかし4人は、例えば、13.34のための費用を分割するならば、問題がある場合
一つの可能なソリューションです。異なる部分は3.34,3.34,3.34,3.32となり、最適な分割は3.34,3.33,3.33,3.33となります。
十分な小数点以下はであると主張する人もいますが、これは膨大な量の行がある場合にのみ問題になります。しかし、経済的なシステムでは、最初からフェールセーフシステムを使用することが重要であると思います。 スケーラブルである必要があり、わずかなエラーが発生することはありません。 不公平は問題ありません。エラーではありません。
同様の問題:sum divided values problem (dealing with rounding error)
「不公平は問題ありません。エラーではありません。 - それを愛する – user1020317
+1プレゼンテーション – Smandoli
私は2つの最も近い分割値を見つけて、2つの値が割り当てられている間に切り替えると思います。次に、最後の奇数値(潜在的な)で何をすべきかを把握します。 – Smandoli