Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.04.2016, 10:41
Интересующийся
Отправить личное сообщение для eridan Посмотреть профиль Найти все сообщения от eridan
 
Регистрация: 22.10.2015
Сообщений: 16

Не верно считает
Здравствуйте, не получается получить правильное число.

Дано:
всего сыграно боев: 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

Вопрос, почему процент не поднялся, и как с этим бороться. Извините если не в тему и не по адресу.
Ответить с цитированием
  #2 (permalink)  
Старый 01.04.2016, 10:56
Интересующийся
Отправить личное сообщение для eridan Посмотреть профиль Найти все сообщения от eridan
 
Регистрация: 22.10.2015
Сообщений: 16

При большом количестве боев этот процент даст огромное количество победных боев, нужно более точное вычисление
Ответить с цитированием
  #3 (permalink)  
Старый 01.04.2016, 11:12
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
Вопрос, почему процент не поднялся, и как с этим бороться
что вы имеет ввиду?
было 52.26586102719033
стало 52.92949354518372
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2016, 11:14
Интересующийся
Отправить личное сообщение для eridan Посмотреть профиль Найти все сообщения от eridan
 
Регистрация: 22.10.2015
Сообщений: 16

Сообщение от destus Посмотреть сообщение
что вы имеет ввиду?
было 52.26586102719033
стало 52.92949354518372
Совершенно верно, должно быть больше или равно 53, ведь в формуле используется именно 53
Ответить с цитированием
  #5 (permalink)  
Старый 01.04.2016, 11:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

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)
Ответить с цитированием
  #6 (permalink)  
Старый 01.04.2016, 11:33
Интересующийся
Отправить личное сообщение для eridan Посмотреть профиль Найти все сообщения от eridan
 
Регистрация: 22.10.2015
Сообщений: 16

Сообщение от рони Посмотреть сообщение
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. Ваша формула работает точнее спасибо

Последний раз редактировалось eridan, 01.04.2016 в 11:43. Причина: После проверки
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему калькулятор не считает? Filja Общие вопросы Javascript 10 25.03.2015 10:40
Слайд картинок не верно отображается в IE petlyra5 Общие вопросы Javascript 2 04.02.2013 18:43
Калькулятор Неправильно считает Jereme Общие вопросы Javascript 1 04.02.2013 14:17
При повторнм запуске функции - считает не верно Iktash Элементы интерфейса 1 21.11.2012 19:00
JS не считает Detex Общие вопросы Javascript 7 01.03.2011 16:46