| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Получение пропорциональных значений. |
| Автор: Ghirik 2.6.2008, 10:04 | ||
| Есть набор числовых значений, известно, что от самого большого значения нужно получить десять процентов, а от остальных, пропорциональное значению количество процентов. Пытался описать математически правильно, но где там...
Т.е. я здесь получаю правильный результат. Но мне кажется такой способ вычисления тяжеловат. Эта штука должна выполняться в цикле несколько десятков раз. Потому хотелось бы облегчить вычисление, как говорится, упростить выражение. По слову пропорция, я не смог найти ни чего связанного с JavaScript, наверное таких методов не существует... Есть у кого предложения? |
| Автор: Grig 2.6.2008, 11:12 |
| Всё об одном. Можно, конечно, написать процедуру или прототип массива, но содержать они будут тот же функционал. |
| Автор: IDVsbruck 2.6.2008, 15:31 |
| Разве что чуть-чуть подправить количество вычислений: не каждый раз в цикле вычислять 10%, а вычислить его до цикла. Надо не забывать, что javascript - это интерпретируемый язык программирования и поэтому чем длиннее и сложнее строка, тем больше уйдет времени на парсинг и, соответственно, вычисление строки. Еще "моментик": зачем вычислять длину массива, а затем декрементировать счетчик, если можно сраз поставить цикл "for (var i in p) {}"? |
| Автор: Ghirik 2.6.2008, 16:17 | ||
Точно, получилось вынести половину.
А по поводу for-in - это медленная штуковина. |
| Автор: Ghirik 2.6.2008, 17:43 |
| НИФИГА! Заработать то заработало, а значения после округления получаются другие... Ладно, оставлю, как есть. |
| Автор: SelenIT 3.6.2008, 20:53 |
Где ж пропорциональность, если на пропорциональную величину [I]делят? Очевидно же, что для пропорциональности нужно все величины умножать на общий коэф-т... |
| Автор: Ghirik 4.6.2008, 05:12 | ||||
Ага... Математик я ещё тот... Вчера пришел к выводу, что MS Excel полиномы не так считает Вообще, не получается что либо вынести из цикла, потому, как p[i] всегда разное(в том числе, бывает равно max), и присутствие proc нужно прямо в цикле. Но заменить умножением можно, оно всё же легче.
Т.е., записи вида proc/(max/p[i]) и p[i]/max*proc идентичны. |