2016-10-04 4 views
0

追加されていません。現在、各セクションは次のとおりです。緑は78%、黄色は13%、赤は8%である。合計が100%でない場合、それは99%に等しくなります。パーセンテージは、私は3つのセクションを持っているドーナツグラフを作成しています最大100%を

各セクションには、終点から来る整数の値があり、すべてをパーセントに変換しようとしています。このグラフの

私は三つの値を有する:

var values = [1397, 234, 149]; 

これらの値を加えたときに100%に等しくする必要があります

var sum = values.reduce((a, b) => a + b, 0); // this works great 

Iが使用する各セクションのパーセンテージを決定する:

var value = 0; 

values.forEach(function(number) { 
    console.log(number + ' = ' + (number/sum) * 100); 
    result += (number/sum) * 100; 
}); 

次のものが生成されます。

1397 = 78.48314606741573 
234 = 13.146067415730336 
149 = 8.370786516853933 
result = 100 

ここに私は問題があると思っています。浮動小数点値を表示することはできません。なぜなら、これはパーセント値ではないからです。私はMath.round()を使用して、私が考えている整数を作成することを決めました。

フローティング値のそれぞれを100%に等しい割合で作成するにはどうすればよいですか? Math.round()の代替手段はありますか?

+0

鉛筆と紙でそれをどうしますか? – Pointy

+0

鉛筆と紙?本当に?明確にするために、私はここに来る前にかなり長い間これを試してみました。無意味なコメントの必要はありません。 – Mike

+0

なぜこれは正確な重複とマークされていますか?正確な質問へのリンクを提供してください、私はそれに従うことがうれしいです。 – Mike

答えて

3

問題は四捨五入です。それぞれの数字には、それぞれがフロアされている割合があることを考えると、最終結果で前記の割合が失われています。各分数を合計すると、1が得られます。どちらが不足しているのですか。これは、一般に、これらのタイプのチャートがどのように表示されるかです。

しかし、合計が100%にならないことが懸念される場合は、結果を「欺く」必要があるかもしれません。 これを行う1つの方法は、各分数を見て、これを考慮に入れて最大分数で1を増やすことです。また、最大の整数を1だけ増やすこともできますが、前者ほど正確ではない可能性があります。これにより、79%、13%、8%という結果が100に相当します。

+0

それを説明してくれてありがとう。私はJSには新しく、私はおそらくこれを処理していたかもしれない機能があると思った。私はクライアントと話をしてファッジのアイデアについて話します。 – Mike

関連する問題