Как это возможно, что одни и те же строки кода время от времени работают по-разному? - PullRequest
0 голосов
/ 02 мая 2020

Я уже заметил, что простое умножение в javascript иногда дает неверные результаты. Под неправильным я не подразумеваю проблему с плавающим значением (2.999999 вместо 3), я имею в виду абсолютно неправильный результат, т.е. 2.6581 вместо 44.919283.

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

Например, у меня есть такие строки:

 console.log('myHighestBuy = ' + myHighestBuy);
 console.log('theirLowestSell = ' + theirLowestSell);

 if ((theirLowestSell * 0.85) < myHighestBuy){

   console.log('If condition is true');
   offerDeal(name, theirLowestSell, MarketPrice, myHighestBuy)

 } else {

   console.log('Not calling offerDeal()');

 }

Что я заметил, когда-то он вызывал функцию offerDeal() несмотря на то, что не должен был.

Корректные журналы консоли:

myHighestBuy = 16.22
theirLowestSell = 27.78
Not calling offerDeal()

Но как только я получил в своей консоли это:

myHighestBuy = 16.22
theirLowestSell = 27.78
If condition is true

Почему это возможно? Это если условие сбой или ошибка умножения?

1 Ответ

1 голос
/ 02 мая 2020

Вам не хватает некоторого ключевого знания, но невозможно определить, для чего ему дана информация в вопросе.

Мои чувства пауков говорят мне, что вы можете случайно использовать глобальную переменную, которую вы мысль была локальной внутри одной из ваших функций; это общая опасность в JavaScript. Чтобы выяснить, правда это или нет, я предлагаю добавить

"use strict";

в качестве первой строки вашего файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...