JavaScriptでは、次のような分数の(x)数が与えられます。
0.3
0.3
0.2
0.1
0.1
(その合計は1になります)
これらに数値(n)、たとえば1000を掛けて、結果を整数に丸めるときに、これらの整数の合計が(n)に等しくなるようにするにはどうすればよいですか?
JavaScriptでは、次のような分数の(x)数が与えられます。
0.3
0.3
0.2
0.1
0.1
(その合計は1になります)
これらに数値(n)、たとえば1000を掛けて、結果を整数に丸めるときに、これらの整数の合計が(n)に等しくなるようにするにはどうすればよいですか?
最大剰余法を使用する:
ステップ1:数値にを掛けてn
(この場合、n
すぐにはうまくいかないものを使用して、LRMがまだ機能することを示します。私は737を選択します)、全体と小数部分を分離します。
0.3 * 737 = 221 + 0.1
0.3 * 737 = 221 + 0.1
0.2 * 737 = 147 + 0.4
0.1 * 737 = 73 + 0.7
0.1 * 737 = 73 + 0.7
ステップ2:整数部分を合計する
221 + 221 + 147 + 73 + 73 = 735
ステップ3:残りを最高から最低に並べ替えます
High to low: 0.7, 0.7, 0.4, 0.1, 0.1
ステップ4:1
合計がに等しくなるまで、関連する最大剰余を持つ整数コンポーネントに追加しn
ます。
737
この場合、ターゲットの合計( )から2離れており0.7
、最大剰余であり、2回発生します。0.7
はに関連付けられているため、の整数0.1
に1を加算します。0.1
最終的なリストは次のとおりです。
221
221
147
74
74
掛け算、丸め、合計をした場合、それを保証することはできません。最初に合計し、次に乗算し、次に丸めてみませんか?