Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вычисляется значение в JavaScript? (https://javascript.ru/forum/misc/80032-kak-vychislyaetsya-znachenie-v-javascript.html)

AlexRow 19.04.2020 21:05

Как вычисляется значение в JavaScript?
 
Подскажите, почему на кальляторе значение xx+x равно 0.752001, а в JavaScript считает как 0.7520009999999999??? Я это значение считаю так: x+dx=0.5+0.001=0.501; xx+x=0.501*0.501+0.501=0.752001

Код:

function diff(f,x,dx){
  //Результат функции
  return f(x+dx)
}

//Функция для передачи аргументом
function G(x){
  //Значение функции
  return x*x+x;//0.7520009999999999
}
//Точное значение
function g(x){
  return 2*x+1;
}

for(let z=0.5; z<=2; z+=0.5){
  document.write(g(z)+' vs.'+diff(G,z,0.001)+'<br>')
}


рони 19.04.2020 21:17

AlexRow,
Неточные вычисления

AlexRow 19.04.2020 22:01

Спасибо большое.
PS: если считать return x*(x+x), то точность почему то не теряется. Будет четко 0.502002. Может потому что, складывается 2 одинаковых числа, а при умножении точность не теряется.

Aetae 19.04.2020 23:43

AlexRow,
alert(0.1*0.2); alert(0.1+0.2)

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


Часовой пояс GMT +3, время: 11:11.