#javascript #math
Вопрос:
ладно, короче говоря. У меня есть формула:
let x = 2
function formula(x){
return 1-1/5 * Math.pow(x,2)
}
Поэтому, когда я использую эту формулу, в результате я получаю 0,8, но если я использую ее так:
let x = 2
function formula(x){
return 4/5 * Math.pow(x,2)
}
это возвращает 4 вместо 0,8.
Как 1-1/5 == 4/5 в соответствии с этим: может ли кто-нибудь сказать мне, почему это происходит
Комментарии:
1.
(1-1/5) * Math.pow(x,2)
и(4/5) * Math.pow(x,2)
2. Если вы добавите круглые скобки в свой первый фрагмент, вы увидите совпадение результатов. Нравится
(1-1/5) * Math.pow(x,2)
.3. ПЕМДЫ, БОДМЫ или ПОСТЕЛЬНЫЕ ПРИНАДЛЕЖНОСТИ
4. @mplungjan я получаю 3,2, что неверно
5. За исключением того, что это так. Каков ожидаемый результат?
Ответ №1:
ПЕМДЫ, БОДМЫ или ПОСТЕЛЬНЫЕ ПРИНАДЛЕЖНОСТИ
3.2 верно — возможно, не то, что вы ожидаете, но верно в соответствии с предоставленной вами математикой
Возможно, вас смущает, что 4*0,8 === 4-0, 8
const formula1 = x => 1-1/5 * Math.pow(x,2); // PEMDAS violation => 1 - (1/(5*4))
const formula2 = x => (1-1/5) * Math.pow(x,2); // PEMDAS
const formula3 = x => 4/5 * Math.pow(x,2); // order interchangeable
console.log("2**2 = ",Math.pow(2,2),"n4/5 = ",4/5,"n4*0.8 = ",2**2*4/5)
console.log(4 * 0.8)
console.log(formula1(2))
console.log(formula2(2))
console.log(formula3(2))