将3个值相加达到100%

时间:2019-01-10 19:51:04

标签: javascript typescript

我需要根据3个不同的计数/来计算状态百分比 假设我有3个状态 1)通过 2)失败 3)跳过

在两种情况下,我设法通过Floor方法设置了一种计算,而在Ceil方法中设置了另一种计算来进行处理。他们总是设法将两个数字完美地相加到100。但是现在我陷入了3个值的困境。帮助将不胜感激。

const successRate = Math.floor((this.progressCounts.getStatusCount('Passed') * 100) / this.progressCounts.getTotal()),
        failureRate = Math.ceil((this.progressCounts.getStatusCount('Failed') * 100) / this.progressCounts.getTotal()),
        skippedRate = Math.floor((this.progressCounts.getStatusCount('Skipped') * 100) / this.progressCounts.getTotal());

1 个答案:

答案 0 :(得分:1)

这是四舍五入的百分比和分数的问题。最简单的方法可能是先floor个,再ceil个,然后根据到目前为止的总和来计算最后一个。

const successRate = Math.floor((this.progressCounts.getStatusCount('Passed') * 100) / this.progressCounts.getTotal());
const failureRate = Math.ceil((this.progressCounts.getStatusCount('Failed') * 100) / this.progressCounts.getTotal());
let skippedRate = this.progressCounts.getStatusCount('Skipped');
if (successRate + failureRate + \
         Math.floor(skippedRate * 100)/this.progressCounts.getTotal() == 100) {
    skippedRate = Math.floor(skippedRate * 100)/this.progressCounts.getTotal();
} else {
    skippedRate = Math.ceil(skippedRate * 100)/this.progressCounts.getTotal();
}

您可能需要稍加捏造,但要遵循一些原则。