2

JavaScriptでは、次のような分数の(x)数が与えられます。

0.3
0.3
0.2
0.1
0.1

(その合計は1になります)

これらに数値(n)、たとえば1000を掛けて、結果を整数に丸めるときに、これらの整数の合計が(n)に等しくなるようにするにはどうすればよいですか?

4

2 に答える 2

3

最大剰余法を使用する:

ステップ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
于 2011-12-02T19:59:44.507 に答える
0

掛け算、丸め、合計をした場合、それを保証することはできません。最初に合計し、次に乗算し、次に丸めてみませんか?

于 2011-12-02T19:51:47.610 に答える