相对“交叉”百分比计算

时间:2013-03-21 03:13:01

标签: javascript math

我有这个数学问题。我需要知道这样的公式:

50% of (x) = 150% of 70
100% of (x) = 100% of 70
150% of (x) = 50% of 70
200% of (x) = 25% of 70
...

这似乎很容易,但我仍然坚持这个小问题。请注意,(x)是一个变量,与此计算无关。

有关详细信息,请计算图像的偏移量。偏移量需要相对于调整大小。这是一个例子(宽度测试是1920px,原始偏移是70px):

50% of 1920 = 150% of 70 = 105
100% of 1920 = 100% of 70 = 70
150% of 1920 = 50% of 70 = 35
200% of 1920 = 25% of 70 = 17,5
...

最终的代码是javascript。

*编辑*

事实上,我只需要了解如何增加一个值,同时以同步的方式减少另一个值。

...
25% ==> 200%
50% ==> 150%
100% ==> 100%
150% ==> 50%
200% ==> 25%
...

有渲染(对不起它快速制作) the is to render like that

事实上,对于我的计算," 70"是一个常数。我的图像越大(> 100%),我的偏移量就越小。这也适用于倒置情况(我的图像小于< 100%,我的偏移量需要更大)。

4 个答案:

答案 0 :(得分:0)

如果你需要找到x等于(通常用于方程式): 70/100 * 50(即我们计算70%的150%)/ 50(这是x的1%)* 100

UPD:基于更多评论,我认为您最好使用一些硬编码值而不是计算值。

var myPercentage = 0;

if (initPercentage <= 50) { myPercentage = 150; } else if (initPercentage > 50 and initPercentage <= 100) { ... }

答案 1 :(得分:0)

我担心它至少不是一个线性方程式:

function test(x){return x*-1 + 200}
alert(test(50)) // okay 150
alert(test(100)) // okay 100 
alert(test(150)) // okay 50
alert(test(200)) // wrong 0 

http://jsfiddle.net/basarat/Skss2/

答案 2 :(得分:0)

你有一个基本的数学问题:

a% * x = b% * 70

求解x,首先展开术语(*和/的顺序在这里不重要):

a * x / 100 = b * 70 / 100

将两边乘以100

a * x = b * 70

将双方划分为:

x = b * 70 / a

所以现在给出a和b你可以解决x。设a = 50b = 150,然后:

x = 150 * 70 / 50
x = 210

测试:70%的150 = 105和50%的210 = 105,所以它有效。

但是那么你有:

100% of (x) = 100% of 70

表示x == 70,这是不一致的,然后是:

150% of (x) = 50% of 70

表示x = 23.33333333,这又是不一致的。

你可以做一个最小二乘的解决方案来计算出x的最佳值,但是这些值可能会如此广泛地传播,因此没什么用。

答案 3 :(得分:0)

是的..我解决了我的问题,但我的逻辑错了。对不起。 我用Excel来找到我的公式。