| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Проверка на идентичность |
| Автор: Pierre 3.10.2015, 11:37 |
| Всем привет. Столкнулся тут с такой проблемой. Не совсем могу понять, почему в данном примере выражения не идентичны? <script type="text/javascript" > var a = 0.3, b = 0.2, c = 0.1; if ((a + b) + c === a + (b + c)) {alert('Equals')} else {alert('Not equals')}; </script> Вроде оператор === сравнивает не только значение, но и тип данных. Хотя используя typeof к каждой переменной получаем везде number Но при использовании === (при сравнении выражений) мы вроде имеем булевые значения, тип boolean, поскольку идет построение if, else(в добавок). Кто может подсказать в чем истина?) Добавлено через 7 минут и 10 секунд Просто я считаю, при выполнении сравнения в первом выражении типы данных у a и b - number, а у c - boolean, а во втором a - boolean, а у b,c - number и поэтому сами выражения не идентичны. Это мнение ошибочно? |
| Автор: Pierre 3.10.2015, 12:37 |
| разобрался сам, мое мнение ошибочно. Не в типе данных дело) Все намного проще) |
| Автор: R71MT 4.10.2015, 01:27 |
| ..мы рады за тебя! Хоть-бы поделился секретом.... А то зачем тему создавал? |
| Автор: ksnk 4.10.2015, 13:51 | ||||
R71MT, Вещественные нельзя сравнивать таким простым образом. В этом и дело. Откуда там могло взяться логическое - нипанятна
|
| Автор: vadya1976 5.10.2015, 17:04 |
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Proverka-na-identichnost-id560f942aae2015226b8b4567#findElement_E7045_56128374ae2015916a97df7a_0 |
| Автор: vadya1976 5.10.2015, 17:05 |
| http://blog.badata.net/ru/177-kostylizaciya.html Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Proverka-na-identichnost-id560f942aae2015226b8b4567#findElement_E7045_56128396ae2015197197dcf8_0 |
| Автор: Pierre 5.10.2015, 22:07 | ||||||
Я ж и написал, что мнение ошибочно. Это просто слишком мозг не в ту степь пошел. А так просто посчитал в js консоле оба выражения подставив значения и все. смутил просто изначально ===, но заменив его и на == разницы не было. |