Не верно считает
Здравствуйте, не получается получить правильное число.
Дано: всего сыграно боев: all_b = 993 из них побед: pobed = 519 Нужно получить сколько победных боев без поражений еще нужно сыграть что б процент побед поднялся. Использую следующую формулу: proc = pobed / all_b * 100; /* Вычисляю реальный процент побед */ n_proc = Math.ceil(proc); /* Ближайшее целое большее процента побед */ n = (all_b * n_proc) / proc - all_b; /* Вычисляю сколько еще боев сыграть */ Трабл заключается в следующем. Не округляя ничего получаю: proc = 52.26586102719033 n_proc = 53 n = 13.947919075144455 Логично предположить, что если сыграть еще 14 боев - процент будет больше 53, но подставив в эту же формулу 14: всего сыграно боев: all_b = 1007 из них побед: pobed = 533 выходят следующие значения: proc = 52.92949354518372 n_proc = 53 n = 1.341407129455888 Вопрос, почему процент не поднялся, и как с этим бороться. Извините если не в тему и не по адресу. |
При большом количестве боев этот процент даст огромное количество победных боев, нужно более точное вычисление
|
Цитата:
было 52.26586102719033 стало 52.92949354518372 |
Цитата:
|
eridan,
function next(b, c) { for (var d = c / b * 100 | 1, a = 1; a++;) if (((c + a) / (b + a) * 100 | 0) >= d) return a }; var all_b = 993, pobed = 519,n = next(all_b, pobed); alert(n) |
Цитата:
for ( n = 1; proc < n_proc; n++ ) { proc = ( pobed + n ) / ( all_b + n ) * 100; } думал обойтись без него, тему можно закрывать, спасибо. P.S. Ваша формула работает точнее спасибо |
Часовой пояс GMT +3, время: 10:26. |