Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на идентичность, как работает? 
V
    Опции темы
Pierre
Дата 3.10.2015, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.10.2015

Репутация: нет
Всего: нет



Всем привет. Столкнулся тут с такой проблемой. Не совсем могу понять, почему в данном примере выражения не идентичны?
<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 и поэтому сами выражения не идентичны. Это мнение ошибочно?

PM MAIL   Вверх
Pierre
Дата 3.10.2015, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.10.2015

Репутация: нет
Всего: нет



разобрался сам, мое мнение ошибочно. Не в типе данных дело) Все намного проще)
PM MAIL   Вверх
R71MT
Дата 4.10.2015, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 28.7.2015

Репутация: нет
Всего: 1



..мы рады за тебя! Хоть-бы поделился секретом.... А то зачем тему создавал?
PM MAIL   Вверх
ksnk
Дата 4.10.2015, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



R71MT, Вещественные нельзя сравнивать таким простым образом. В этом и дело. Откуда там могло взяться логическое - нипанятна
Код

var a = 0.3, b = 0.2, c = 0.1;
console.log((a + b) + c,a + (b + c));

Код

0.6 0.6000000000000001



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
vadya1976
Дата 5.10.2015, 17:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











user posted image 

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
vadya1976
Дата 5.10.2015, 17:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











костыль

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
Pierre
Дата 5.10.2015, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.10.2015

Репутация: нет
Всего: нет



Цитата(ksnk @ 4.10.2015,  13:51)
R71MT, Вещественные нельзя сравнивать таким простым образом. В этом и дело. Откуда там могло взяться логическое - нипанятна
Код

var a = 0.3, b = 0.2, c = 0.1;
console.log((a + b) + c,a + (b + c));

Код

0.6 0.6000000000000001

Я ж и написал, что мнение ошибочно. Это просто слишком мозг не в ту степь пошел.
А так просто посчитал в js консоле оба выражения подставив значения и все. смутил просто изначально ===, но заменив его и на == разницы не было.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.