Javascript 百分比加起来不等于100%

Javascript 百分比加起来不等于100%,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我正在创建一个甜甜圈图表,它有3个部分: 当用户将鼠标悬停在每个彩色部分上时,它将显示100%的百分比。目前各部分内容如下:;绿色是78%,黄色是13%,红色是8%。如果你把所有这些加起来,is不等于100%,它等于99% 每个部分的值都是整数,从终点开始,我试图将所有内容转换为百分比 对于此图表,我有三个值: var values = [1397, 234, 149]; 添加时,这些值需要等于100%: var sum = values.reduce((a, b) => a + b,

我正在创建一个甜甜圈图表,它有3个部分:

当用户将鼠标悬停在每个彩色部分上时,它将显示100%的百分比。目前各部分内容如下:;绿色是78%,黄色是13%,红色是8%。如果你把所有这些加起来,is不等于100%,它等于99%

每个部分的值都是整数,从终点开始,我试图将所有内容转换为百分比

对于此图表,我有三个值:

var values = [1397, 234, 149];
添加时,这些值需要等于100%:

var sum = values.reduce((a, b) => a + b, 0); // this works great
要确定我使用的每个部分的百分比:

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()

问题是您正在舍入。假设每个数字都有一个分数,导致每个数字都被打倒,那么在最终结果中,你就失去了所说的分数。如果你把每一个分数相加,你得到1。这就是你所缺少的。这通常是这些类型图表的显示方式

然而,如果你担心总数不等于100%,你可能不得不对结果做一些“捏造”。
一种方法是查看每个分数,并将最大分数的数字增加1,以说明这一点。您也可以将最大整数也增加1,但可能不如前者准确。这将得到79%、13%和8%的结果,即等于100。

问题是您正在四舍五入。假设每个数字都有一个分数,导致每个数字都被打倒,那么在最终结果中,你就失去了所说的分数。如果你把每一个分数相加,你得到1。这就是你所缺少的。这通常是这些类型图表的显示方式

然而,如果你担心总数不等于100%,你可能不得不对结果做一些“捏造”。
一种方法是查看每个分数,并将最大分数的数字增加1,以说明这一点。您也可以将最大整数也增加1,但可能不如前者准确。这将给你一个79%、13%和8%的结果,等于100。

那么你用铅笔和纸怎么做?铅笔和纸?真正地我只是想澄清一下,在来这里之前,我确实尝试了一段时间。不需要无意义的注释。为什么标记为完全重复?请提供一个精确的问题链接,我很乐意跟进。@Bergi已将其标记为标题下方链接的问题的副本。@pointy-我感谢您的反馈。您如何使用铅笔和纸?铅笔和纸?真正地我只是想澄清一下,在来这里之前,我确实尝试了一段时间。不需要无意义的注释。为什么标记为完全重复?请提供一个精确的问题链接,我将很高兴跟进。@Bergi已将其标记为标题下方链接的问题的副本。@pointy-感谢您的反馈。谢谢您的解释。我是JS新手,我想也许有一个函数可以解决这个问题。我会和客户谈谈,讨论一下福吉的想法。谢谢你解释清楚。我是JS新手,我想也许有一个函数可以解决这个问题。我会和客户谈谈,讨论一下“软糖”的想法。