Я пытаюсь импортировать математическую функцию в Javascript. Это следующая формула: http://www.wolframalpha.com/input/?i = -0.000004x % 5E2 % 2B0.004x

Примеры значений:

f (0) = 0

f (500) = 1

f (1000) = 0

Итак, это моя функция:

function jumpCalc(x) {
    return (-0.004*(x^2)+4*x)/1000;
}

Значения совершенно неверны.

Где моя ошибка? Спасибо.

1
wernersbacher 18 Дек 2015 в 12:14

3 ответа

Лучший ответ

^ не делает то, что вы думаете. В JavaScript ^ является побитовым оператором XOR.

^ (Побитовый XOR)

Выполняет операцию XOR для каждой пары битов. a XOR b дает 1, если a и b различны.
- Битовая документация XOR MDN

Вместо этого вам нужно использовать встроенную функцию JavaScript Math.pow():

Math.pow()

Функция Math.pow() возвращает базу степени экспоненты, то есть базовую экспоненту .
- Документация MDN's Math.pow ()

return (-0.004*(Math.pow(x, 2))+4*x)/1000;

Работающий JSFiddle .

7
James Donnelly 18 Дек 2015 в 09:18

Вы можете уменьшить эту формулу до

function getThatFunc(x){
    return x * (-0.004 * x + 4) / 1000;
} 
0
Michal Paszkiewicz 18 Дек 2015 в 09:30

Используйте Math.pow, как это

function jumpCalc(x) {
    return (-0.004*(Math.pow(x,2))+4*x)/1000;
}
2
Grigoris Dimopoulos 18 Дек 2015 в 09:22