Javascript: 数学公式太长无法正确计算?
Javascript: Math formula too long to calculate correctly?
我使用相当长的公式从 4 个输入数字计算特定值。它在 JSFiddle 中完美运行,但由于某种原因,结果在我的网站上不正确。它仅在值 M 大于 15 时起作用,然后它会重置为 15。所以
4<=M<=15
0<q<1
0<W
0<S
其中 M 是最大狂欢次数,S 是分数,q 是击杀概率,W 是获胜次数。
这个应该给我一个0到1之间的值,但它经常超过1000...
这里是Fiddle:https://jsfiddle.net/ogonu9e9/
您可以尝试不同的值,但请记住上面的规则,不要使用 q 或 M 过低。
在我的网站上:http://zcatch-ranking.com/
只需单击名称然后展开
我用 Mathematica 得到了公式。
代码
M = 14;
S = 145.46;
if (M > 15) {
M = 15;
}
W = 61;
q = 0.574;
document.getElementById('text').innerHTML = 'S=' + S + ' W=' + W + ' q=' + q + ' M=' + M;
function expand() {
$('#expand').remove();
var p = (-2 * (-675 * Math.pow((-1 + q), 2) * S + (192 - 2 * (-52 + 61 * M) * q + (4 - 13 * M + 15 * Math.pow(M, 2)) * Math.pow(q, 2)) * W) + (2 * Math.pow(2, (1 / 3)) * (-4 + M) * Math.pow(q, 2) * W * (2025 * (-5 + M) * (-1 + q) * (-5 + (-1 + M) * q) * S + (42 * Math.pow(M, 3) * Math.pow(q, 2) - 3 * Math.pow(M, 2) * q * (113 + 22 * q) - 4 * (121 + 13 * q + Math.pow(q, 2)) + M * (841 + 217 * q + 25 * Math.pow(q, 2))) * W)) / Math.pow((-(-4 + M) * Math.pow(q, 3) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (2260 - 1337 * M + 177 * Math.pow(M, 2)) * S * W + 2 * (20176 - 52424 * M + 18757 * Math.pow(M, 2)) * Math.pow(W, 2)) + 3 * (-4 + M) * Math.pow(q, 4) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (-900 + 1225 * M - 654 * Math.pow(M, 2) + 89 * Math.pow(M, 3)) * S * W + (-1168 + 4856 * M - 5521 * Math.pow(M, 2) + 4551 * Math.pow(M, 3)) * Math.pow(W, 2)) + 3 * Math.pow(3, 1 / 2) * Math.pow((-(-5 + M) * Math.pow((-4 + M), 2) * Math.pow(q, 6) * Math.pow(W, 2) * Math.pow((-225 * Math.pow((-1 + q), 3) * S + (-64 + (-52 + 61 * M) * q + (-4 + 13 * M - 15 * Math.pow(M, 2)) * Math.pow(q, 2) + Math.pow(M, 3) * Math.pow(q, 3)) * W), 2) * (-1366875 * Math.pow((-6 + M), 2) * (-5 + M) * Math.pow(S, 2) + 12150 * (80 - 176 * M - 13 * Math.pow(M, 2) + 9 * Math.pow(M, 3)) * S * W + (-336 + 2552 * M - 8125 * Math.pow(M, 2) + 8789 * Math.pow(M, 3)) * Math.pow(W, 2))), 1 / 2) - 3 * (-4 + M) * Math.pow(q, 5) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (420 - 889 * M + 396 * Math.pow(M, 2) - 122 * Math.pow(M, 3) + 15 * Math.pow(M, 4)) * S * W + (-208 + 1544 * M - 4957 * Math.pow(M, 2) + 4758 * Math.pow(M, 3) - 39 * Math.pow(M, 4)) * Math.pow(W, 2)) + (-4 + M) * Math.pow(q, 6) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (-20 + 89 * M - 157 * Math.pow(M, 2) + 58 * Math.pow(M, 3) - 11 * Math.pow(M, 4) + Math.pow(M, 5)) * S * W + (32 - 304 * M + 1298 * Math.pow(M, 2) - 2646 * Math.pow(M, 3) + 2421 * Math.pow(M, 4) - 243 * Math.pow(M, 5)) * Math.pow(W, 2))), (1 / 3)) + Math.pow(2, (2 / 3)) * Math.pow((-(-4 + M) * Math.pow(q, 3) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (2260 - 1337 * M + 177 * Math.pow(M, 2)) * S * W + 2 * (20176 - 52424 * M + 18757 * Math.pow(M, 2)) * Math.pow(W, 2)) + 3 * (-4 + M) * Math.pow(q, 4) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (-900 + 1225 * M - 654 * Math.pow(M, 2) + 89 * Math.pow(M, 3)) * S * W + (-1168 + 4856 * M - 5521 * Math.pow(M, 2) + 4551 * Math.pow(M, 3)) * Math.pow(W, 2)) + 3 * Math.pow(3, 1 / 2) * Math.pow((-(-5 + M) * Math.pow((-4 + M), 2) * Math.pow(q, 6) * Math.pow(W, 2) * Math.pow((-225 * Math.pow((-1 + q), 3) * S + (-64 + (-52 + 61 * M) * q + (-4 + 13 * M - 15 * Math.pow(M, 2)) * Math.pow(q, 2) + Math.pow(M, 3) * Math.pow(q, 3)) * W), 2) * (-1366875 * Math.pow((-6 + M), 2) * (-5 + M) * Math.pow(S, 2) + 12150 * (80 - 176 * M - 13 * Math.pow(M, 2) + 9 * Math.pow(M, 3)) * S * W + (-336 + 2552 * M - 8125 * Math.pow(M, 2) + 8789 * Math.pow(M, 3)) * Math.pow(W, 2))), 1 / 2) - 3 * (-4 + M) * Math.pow(q, 5) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (420 - 889 * M + 396 * Math.pow(M, 2) - 122 * Math.pow(M, 3) + 15 * Math.pow(M, 4)) * S * W + (-208 + 1544 * M - 4957 * Math.pow(M, 2) + 4758 * Math.pow(M, 3) - 39 * Math.pow(M, 4)) * Math.pow(W, 2)) + (-4 + M) * Math.pow(q, 6) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (-20 + 89 * M - 157 * Math.pow(M, 2) + 58 * Math.pow(M, 3) - 11 * Math.pow(M, 4) + Math.pow(M, 5)) * S * W + (32 - 304 * M + 1298 * Math.pow(M, 2) - 2646 * Math.pow(M, 3) + 2421 * Math.pow(M, 4) - 243 * Math.pow(M, 5)) * Math.pow(W, 2))), (1 / 3))) / (6 * (-225 * Math.pow((-1 + q), 3) * S + (-64 + (-52 + 61 * M) * q + (-4 + 13 * M - 15 * Math.pow(M, 2)) * Math.pow(q, 2) + Math.pow(M, 3) * Math.pow(q, 3)) * W));
$('#expanded').html('</br><hr style="margin-top:40px;"></br>Test ' + p)
}
HTML:
<div id="text">
</div>
<button onclick="expand()" type="button" id="expand">
expand
</button>
<span id="expanded">
也许改变你的分配方法
4<=M<=15
0<q<1
0<W
0<S
尝试
nested if
像下面的例子它可以帮助你
if(4<=M)
if(M<=15)
...
如果你还想在单线门(与门)中使用
希望有用。
我使用相当长的公式从 4 个输入数字计算特定值。它在 JSFiddle 中完美运行,但由于某种原因,结果在我的网站上不正确。它仅在值 M 大于 15 时起作用,然后它会重置为 15。所以
4<=M<=15
0<q<1
0<W
0<S
其中 M 是最大狂欢次数,S 是分数,q 是击杀概率,W 是获胜次数。
这个应该给我一个0到1之间的值,但它经常超过1000...
这里是Fiddle:https://jsfiddle.net/ogonu9e9/
您可以尝试不同的值,但请记住上面的规则,不要使用 q 或 M 过低。
在我的网站上:http://zcatch-ranking.com/
只需单击名称然后展开
我用 Mathematica 得到了公式。
代码
M = 14;
S = 145.46;
if (M > 15) {
M = 15;
}
W = 61;
q = 0.574;
document.getElementById('text').innerHTML = 'S=' + S + ' W=' + W + ' q=' + q + ' M=' + M;
function expand() {
$('#expand').remove();
var p = (-2 * (-675 * Math.pow((-1 + q), 2) * S + (192 - 2 * (-52 + 61 * M) * q + (4 - 13 * M + 15 * Math.pow(M, 2)) * Math.pow(q, 2)) * W) + (2 * Math.pow(2, (1 / 3)) * (-4 + M) * Math.pow(q, 2) * W * (2025 * (-5 + M) * (-1 + q) * (-5 + (-1 + M) * q) * S + (42 * Math.pow(M, 3) * Math.pow(q, 2) - 3 * Math.pow(M, 2) * q * (113 + 22 * q) - 4 * (121 + 13 * q + Math.pow(q, 2)) + M * (841 + 217 * q + 25 * Math.pow(q, 2))) * W)) / Math.pow((-(-4 + M) * Math.pow(q, 3) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (2260 - 1337 * M + 177 * Math.pow(M, 2)) * S * W + 2 * (20176 - 52424 * M + 18757 * Math.pow(M, 2)) * Math.pow(W, 2)) + 3 * (-4 + M) * Math.pow(q, 4) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (-900 + 1225 * M - 654 * Math.pow(M, 2) + 89 * Math.pow(M, 3)) * S * W + (-1168 + 4856 * M - 5521 * Math.pow(M, 2) + 4551 * Math.pow(M, 3)) * Math.pow(W, 2)) + 3 * Math.pow(3, 1 / 2) * Math.pow((-(-5 + M) * Math.pow((-4 + M), 2) * Math.pow(q, 6) * Math.pow(W, 2) * Math.pow((-225 * Math.pow((-1 + q), 3) * S + (-64 + (-52 + 61 * M) * q + (-4 + 13 * M - 15 * Math.pow(M, 2)) * Math.pow(q, 2) + Math.pow(M, 3) * Math.pow(q, 3)) * W), 2) * (-1366875 * Math.pow((-6 + M), 2) * (-5 + M) * Math.pow(S, 2) + 12150 * (80 - 176 * M - 13 * Math.pow(M, 2) + 9 * Math.pow(M, 3)) * S * W + (-336 + 2552 * M - 8125 * Math.pow(M, 2) + 8789 * Math.pow(M, 3)) * Math.pow(W, 2))), 1 / 2) - 3 * (-4 + M) * Math.pow(q, 5) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (420 - 889 * M + 396 * Math.pow(M, 2) - 122 * Math.pow(M, 3) + 15 * Math.pow(M, 4)) * S * W + (-208 + 1544 * M - 4957 * Math.pow(M, 2) + 4758 * Math.pow(M, 3) - 39 * Math.pow(M, 4)) * Math.pow(W, 2)) + (-4 + M) * Math.pow(q, 6) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (-20 + 89 * M - 157 * Math.pow(M, 2) + 58 * Math.pow(M, 3) - 11 * Math.pow(M, 4) + Math.pow(M, 5)) * S * W + (32 - 304 * M + 1298 * Math.pow(M, 2) - 2646 * Math.pow(M, 3) + 2421 * Math.pow(M, 4) - 243 * Math.pow(M, 5)) * Math.pow(W, 2))), (1 / 3)) + Math.pow(2, (2 / 3)) * Math.pow((-(-4 + M) * Math.pow(q, 3) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (2260 - 1337 * M + 177 * Math.pow(M, 2)) * S * W + 2 * (20176 - 52424 * M + 18757 * Math.pow(M, 2)) * Math.pow(W, 2)) + 3 * (-4 + M) * Math.pow(q, 4) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (-900 + 1225 * M - 654 * Math.pow(M, 2) + 89 * Math.pow(M, 3)) * S * W + (-1168 + 4856 * M - 5521 * Math.pow(M, 2) + 4551 * Math.pow(M, 3)) * Math.pow(W, 2)) + 3 * Math.pow(3, 1 / 2) * Math.pow((-(-5 + M) * Math.pow((-4 + M), 2) * Math.pow(q, 6) * Math.pow(W, 2) * Math.pow((-225 * Math.pow((-1 + q), 3) * S + (-64 + (-52 + 61 * M) * q + (-4 + 13 * M - 15 * Math.pow(M, 2)) * Math.pow(q, 2) + Math.pow(M, 3) * Math.pow(q, 3)) * W), 2) * (-1366875 * Math.pow((-6 + M), 2) * (-5 + M) * Math.pow(S, 2) + 12150 * (80 - 176 * M - 13 * Math.pow(M, 2) + 9 * Math.pow(M, 3)) * S * W + (-336 + 2552 * M - 8125 * Math.pow(M, 2) + 8789 * Math.pow(M, 3)) * Math.pow(W, 2))), 1 / 2) - 3 * (-4 + M) * Math.pow(q, 5) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 2025 * (420 - 889 * M + 396 * Math.pow(M, 2) - 122 * Math.pow(M, 3) + 15 * Math.pow(M, 4)) * S * W + (-208 + 1544 * M - 4957 * Math.pow(M, 2) + 4758 * Math.pow(M, 3) - 39 * Math.pow(M, 4)) * Math.pow(W, 2)) + (-4 + M) * Math.pow(q, 6) * W * (1366875 * (30 - 11 * M + Math.pow(M, 2)) * Math.pow(S, 2) + 6075 * (-20 + 89 * M - 157 * Math.pow(M, 2) + 58 * Math.pow(M, 3) - 11 * Math.pow(M, 4) + Math.pow(M, 5)) * S * W + (32 - 304 * M + 1298 * Math.pow(M, 2) - 2646 * Math.pow(M, 3) + 2421 * Math.pow(M, 4) - 243 * Math.pow(M, 5)) * Math.pow(W, 2))), (1 / 3))) / (6 * (-225 * Math.pow((-1 + q), 3) * S + (-64 + (-52 + 61 * M) * q + (-4 + 13 * M - 15 * Math.pow(M, 2)) * Math.pow(q, 2) + Math.pow(M, 3) * Math.pow(q, 3)) * W));
$('#expanded').html('</br><hr style="margin-top:40px;"></br>Test ' + p)
}
HTML:
<div id="text">
</div>
<button onclick="expand()" type="button" id="expand">
expand
</button>
<span id="expanded">
也许改变你的分配方法
4<=M<=15
0<q<1
0<W
0<S
尝试
nested if
像下面的例子它可以帮助你
if(4<=M)
if(M<=15)
...
如果你还想在单线门(与门)中使用 希望有用。