2010-10-27 2 views
0

Как это выразить в javascript?Простая математическая проблема javascript

9Н квадрат плюс 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); 

Я не волнует, если это лаконичный или нет, но я не уверен, что лучший способ обработки математики в javascript.

спасибо.

+4

Что случилось с тем, что у вас есть сейчас? Это работает? –

+0

Может быть выражен как 'L * (H * H * 81 + 3 * H)/2' ... или вы можете смещать бит' (L * (81 * H * H + 3 * H)) >> 2' – irrelephant

+0

@ Энтони Это не работало в jsfiddle, но, возможно, я был ближе, чем думал. Я приложу несколько советов, которые я вижу здесь, и попытаюсь заставить его работать. Благодарю. – orolo

ответ

5

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

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

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

1

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

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

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; 

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

+1

9H^2 означает 9 * H * H, а не 9 * H * 9 * H –

+0

@Andrew: это ** полностью ** зависит от круглых скобок. Что заставляет вас думать, что (менее точное) выражение на английском языке формулы является тем, что подразумевал OP? Высказывание «квадрат 9H» неоднозначно. Это может означать либо «(9H)^2', либо« 9 (H^2) », но я пошел с выражением проблемы более точно - _code_. –

+0

Я согласен с тем, что вы говорите о двусмысленности. Я пошел с другой интерпретацией, потому что это похоже на базовое полиномиальное выражение, и я предположил, учитывая вопрос, что ОП допустил ошибку в получении формулы в код. –

1

В "9Н квадрате" это только H, что квадрат, так

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

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

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

Не забудьте сделать переменную из var предварённых будет сделать его глобальным :)

1

+1 к Andrew Cooper

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

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

(9 * H * H + 3 * H)/(2 * L)
или коэффициент
(3 * H) (3 * H + 1)/(2 * L)

Коэффициент равен сумме 1 + 2 + .. + 3H все по L (если H intger)
Эта последняя часть, вероятно, ничего не делает для вас, но мне нравится идентификация = P

+0

Да, я думаю, вы правы. Как вы можете сказать, я действительно борюсь с математикой. – orolo

Смежные вопросы