Странное явление, происходящее с формулой в Javascript

#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))