Простая математическая задача javascript - PullRequest
0 голосов
/ 27 октября 2010

Как я могу выразить это в javascript?

9H в квадрате плюс 3H более 2 раз L

Я работаю над чем-то вроде:

function calculator (height, len) {
var H = height, L = len;
total = (((9 * H)*(9 * H)) + 3*H)/2)*L;
return total;
}

calculator(15, 7);

IМне все равно, если это кратко или нет, но я не уверен, что лучший способ справиться с математикой в ​​javascript.

спасибо.

Ответы [ 6 ]

5 голосов
/ 27 октября 2010

Квадрат числа x может быть представлен как Math.pow(x, 2).Кроме того, «более чем в 2 раза больше L» будет означать / (2 * L) в конце, а не как у вас, если вы действительно имеете в виду:

  whatever
-----------
    2L

Вы также пропускаете ключевое слово var доtotal, который объявил бы ее как локальную переменную.

4 голосов
/ 27 октября 2010

Метод Хорнера - хороший способ выражения полиномов:

function calc (height, length) {
     return ((9*height + 3)*height)/(2*length);
}

http://en.wikipedia.org/wiki/Horner_scheme

1 голос
/ 27 октября 2010

+ 1 Эндрю Куперу

(9 * H) * (9 * H) = 81 * H ^ 2, что я не думаю, что вы намереваетесь

9 * H * H = 9H ^ 2, как вы собираетесь этот термин

(9 * Н * Н + 3 * Н) / (2 * Л)
или фактор
(3 * Н) (3 * Н + 1) / (2 * L)

Что равно сумме 1 + 2 + .. + 3H, разделенных на L (если H - целое число)
Эта последняя часть, вероятно, ничего не делает для вас, но мне нравится личность = P

1 голос
/ 27 октября 2010

В "9H в квадрате" это только H в квадрате, поэтому

function calculator (height, len) {
    var H = height, L = len;
    var total = (9*H*H + 3*H)/(2*L);
    return total;
}
1 голос
/ 27 октября 2010

выглядит почти нормально для меня.В чем проблема у вас?

Единственное, что я вижу неправильно, это отсутствие var до итога, что делает его глобальным.Измените свой код на:

function calculator (height, len) {
    var H = height,
        L = len, // <-- subtle change: replace ; with ,
        total = (((9 * H)*(9 * H)) + 3*H)/2)*L;
    return total;
}

Конечно, вы также можете выделить 9:

total = ((81*H*H + 3*H)/2)*L;

И если вы хотите стать еще более любопытным, то выделите общее 3*H а также:

total = (3*H*(27*H + 1)/2)*L;

Но я не уверен, что еще вы здесь ищете.

0 голосов
/ 27 октября 2010

Вы могли бы пойти по этому поводу так ...

function calculator (height, len) {
  var h = height, l = len;
  var total = ( 9 * Math.pow(h, 2) + 3*h ) / (2*l);
  return total;
}

Не забудьте сделать переменную без префикса var, который сделает ее глобальной:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...