重量和百分比

时间:2013-02-19 14:28:46

标签: .net math numbers puzzle equation

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

例如: 我得到了以下权重:

Var    Weight
x       100
y        50
z        50

So z is 25% ,y is 25% and x is 50%

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

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

但是,需要进行的必要条件是权重将保持整数,新/编辑权重的百分比将按要求进行。

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

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

但事实并非如此......

1 个答案:

答案 0 :(得分: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数据类型。