[解決済み】丸められたパーセンテージを100%にする方法
2022-04-18 16:34:15
質問
以下の4つのパーセンテージを考えてみましょう。
float
の数値が表示されます。
13.626332%
47.989636%
9.596008%
28.788024%
-----------
100.000000%
このパーセンテージを整数で表す必要があります。もし私が単に
Math.round()
の合計が101%になってしまう。
14 + 48 + 10 + 29 = 101
もし私が
parseInt()
で、合計97%になります。
13 + 47 + 9 + 28 = 97
合計を100%に保ちつつ、任意の数のパーセンテージを整数で表現する良いアルゴリズムは?
編集 : いくつかのコメントと回答を読んだ後、これを解決するために行くには明らかに多くの方法があります。
私の考えでは、数字に忠実であるために、quot;right"の結果は、実際の値に対して丸め誤差がどれくらい発生するかで定義される、全体の誤差を最小化するものです。
value rounded error decision
----------------------------------------------------
13.626332 14 2.7% round up (14)
47.989636 48 0.0% round up (48)
9.596008 10 4.0% don't round up (9)
28.788024 29 2.7% round up (29)
同点の場合(3.33, 3.33, 3.33)、任意の判定を行うことができる(例:3, 4, 3)。
どのように解決するのですか?
ここにあるどの回答も適切に解決していないようなので、以下は私の半難読化バージョンです。 アンダースコアjs :
function foo(l, target) {
var off = target - _.reduce(l, function(acc, x) { return acc + Math.round(x) }, 0);
return _.chain(l).
sortBy(function(x) { return Math.round(x) - x }).
map(function(x, i) { return Math.round(x) + (off > i) - (i >= (l.length + off)) }).
value();
}
foo([13.626332, 47.989636, 9.596008, 28.788024], 100) // => [48, 29, 14, 9]
foo([16.666, 16.666, 16.666, 16.666, 16.666, 16.666], 100) // => [17, 17, 17, 17, 16, 16]
foo([33.333, 33.333, 33.333], 100) // => [34, 33, 33]
foo([33.3, 33.3, 33.3, 0.1], 100) // => [34, 33, 33, 0]
関連
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] NaN値をチェックするにはどうすればよいですか?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] 円周率の計算が正確かどうかを判断するにはどうしたらよいですか?
-
[解決済み] ある数字が2の累乗かどうかを確認する方法
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み】異なるサイズの長方形を、かなり最適な方法で可能な限り小さな長方形に詰め込むには、どのようなアルゴリズムが使用できるだろうか?
-
[解決済み】丸められたパーセンテージを100%にする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] dplyrによる相対度数/比率の計算
-
[解決済み] 再帰の複雑さ T(n) = T(n-1) + T(n-2) + C
-
[解決済み] バックトラックアルゴリズムの時間計算方法は?
-
[解決済み] Pythonでfloatをほぼ等しく比較する最良の方法は何ですか?
-
[解決済み】Redisに使用されている基礎的なデータ構造は何ですか?
-
[解決済み】10億個の数字の配列から最大100個の数字を求めるプログラムを作成せよ
-
[解決済み】2つの整数を1つにマッピングする、一意的かつ決定論的な方法
-
[解決済み】iTunes 11の曲リストに色をつけるアルゴリズムはどうなっているのでしょうか?[クローズド]
-
[解決済み】最も近い文字列のマッチを取得する
-
[解決済み】固定長 6 int 配列の最速ソート