-1

我需要能够按百分比编辑整数类型的权重值。

例如:我得到以下权重:

变量权重
× 100
是 50
z 50

所以 z 是 25%,y 是 25%,x 是 50%

现在,如果我希望能够编辑现有权重或按百分比输入添加新权重,我如何确保权重仍然是整数类型并且不需要任何舍入。

例如,如果我想添加一个占总重量 25% 的新重量,我该如何计算?请注意,我可以更改其他权重(增量/减量)以实现此目的。

但是这里需要发生的必要条件是权重将保持整数,并且新/编辑权重的百分比将按照要求。

如果我不必确保权重是整数,那么这很容易,我可以使用以下等式:

NewWeight = (Sum*RequestedPerecentage)/(1-RequestedPerecentage)

但事实并非如此……

4

1 回答 1

2

假设您想在列表中添加 w% 的权重。在您的第一个示例中,w = 25。

首先,找到当前权重的总和。

x 100
y 50
z 50
----
Total 200

将每个当前权重乘以 (100-w)。

x 7500
y 3750
z 3750

将 w 乘以您之前找到的总数,然后将其添加到列表中。

x 7500
y 3750
z 3750
w 5000

您可以通过将每个数字除以所有权重的GCD来将数字减少到最小形式。

x 6
y 3
z 3
w 4

使用此方法时请注意溢出错误。最好使用某种 bignum 数据类型。

于 2013-02-19T16:18:27.030 回答