Спасибо, что создал JS... / it-юмор :: js :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek js 

Спасибо, что создал JS...

Z typeof NaN <• "number"
>	9999999999999999 10000000000000000
>	0.5+0.1==0.6 <• true
i 0.1+0.2==0.3 <• false * Math.max()
<• -Infinity
>	Math.min()
<• Infinity
>	[]+[]
<. 11 11
> []+{}
<• "[object Object]"
> {)+[]
<• 0
> true+true+true===3 <• true
£ true==l <• true
>	true===l <•
Подробнее
Z typeof NaN <• "number" > 9999999999999999 10000000000000000 > 0.5+0.1==0.6 <• true i 0.1+0.2==0.3 <• false * Math.max() <• -Infinity > Math.min() <• Infinity > []+[] <. 11 11 > []+{} <• "[object Object]" > {)+[] <• 0 > true+true+true===3 <• true £ true==l <• true > true===l <• false > (*+[]+[]+'[]).length <• 9 > 9+"l" <• "91" * 91-"1" <• 90 > []==0 true > true-true <• 0
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,js
Еще на тему
Развернуть
Почему 0.5+0.1==0.6 - это норм, а 0.1+0.2==0.3 - не норм?
Почему 9+"1" - на выходе строка (или чар?), а 91-"1" - на выходе число?
Что это за шайтанство?
Slawka Slawka 06.12.201803:33 ответить ссылка 0.7
Вот почему.
Ты же не сам фоткал экран, а сделал это через специальный сайт?
Джой на телефоне включен был. А ты труба на компе. Ну согрешил разок, с кем не бывает.
Еще вариант: дают комп с вырваными USB и доступом только во внутреннюю сеть.
Ух... или динозаврия (тогда хоть можно поставить адаптер на усб) или паранойя.
MaXM00D MaXM00D 06.12.201823:29 ответить ссылка -0.1
Банковкая сеть
Параноидальный динозавр.
ну оно оправдано, сеть реально чудовищная
Теперь у меня еще больше вопросов.
Slawka Slawka 06.12.201805:30 ответить ссылка 4.0
В двоичном коде нет дроби 0.3
Вообще в двоичном коде дроби записываются иначе чем целые числа. Там они делят число 1
К примеру:
0,1 - это 0.5
0,01 - это 0.25
0,001 - 0.125

0,11 - 0,75
0,011 - 0,375
0,0101 - 0,3125
И т.д.
В общем ты не можешь в двоичном коде поделить 1 так, чтобы получить в итоге ровно 0,3.
0.3 -- это десятичная дробь ее всегда можно представить виде точного числа в плавающей точкой.
Если в кратко то 0.3 = 3 * 10 ^ -1. А при записи числа с плавающей точкой в битовую строку запишется 3 и степень десятки (то есть -1).

А еще JS - это не компилируемый язык, так что все эти рассуждения про двоичный код здесь неуместны. Вся эта ситуация -- косяк интерпретатора
Roxot Roxot 06.12.201807:59 ответить ссылка 0.0
Это decimal, а float и double как описано выше, прилагаю что это намеренно перенесённый косяк.
Добро пожаловать в мир операций с плавающей точкой. Числа с плавающей точкой (дроби) представляются в виде 32-х или 64-х битного числа в экспоненциальной форме, часть бит отводятся на мантиссу, а часть - на показатель степени (и один бит знака). Например, float (32 бит) имеет 8 бит экспоненты и 23 бита мантиссы. Число образуется следующим образом:
(-l)s * l,M*2(ß-127>

Т.е. полная мантисса (обратите внимание на единичку слева от М) лежит в интервале [1.0; 2.0). И да, это ДВОИЧНАЯ мантисса. И основание степени в числе тоже ДВА.

И теперь внимание вопрос: можно ли представить число 0.3 ТОЧНО в экспоненциальной форме с основанием ДВА? Ответ: нет, нельзя. И это не имеет отношения к джаваскрипту. Это стандарт IEEE 754, который применяется ВЕЗДЕ. Все современные процессоры имеют сопроцессоры для быстрой работы с числами с плавающей запятой (FPU). Все языки оперируют именно такими числами. Это везде. А человек, который создал картинку в посте, - долбоеб, который выучить только шутейки про джаваскрипт, но не знает основ.

И да, это приводит к проблемам. Например, нельзя просто так взять и сравнить два числа с плавающей запятой.

if(a == 0.5) // хер тебе в рыло, сраный урод

Это побитовое сравнение, и требует точного совпадения, которое может быть, а может не быть. Как правильно.

if(abs(a - 0.5)

Но это детский сад по сравнению с проблемой вычислительной устойчивости. Представь, что ты делаешь какие-то расчеты. Это может быть скучное решение уравнений на сраной лабе, расчет напряженности в крыло ебучего самолета или же физический движок твоей любимой игры. И куча методов расчета - итерационные, они считают одну и ту же хуйню стопицот раз, приближаясь к правильному ответу. Но если что-то пошло не так (например, ты дохуя раз прибавляешь очень маленькое число к очень большому), то весь твой расчет может пойти по пизде, дать неверные результаты или НЕ СОЙТИСЬ НАХУЙ! ДА, БЛЯТЬ, ВЗРЫВАЙ ЭТУ ЕБАНУЮ ФИЗИКУ! (Думаю, многие видели, как в разных играх с физикой объекты может распидорасить. Garrys's Mod это любит).
Спасибо парсеру реактора за мое счастливое детство.

if(abs(a - 0.5)
насчет первого хз, а насчет второго - потому что когда конкатенируешь строку с чем-нибудь, что строкой не является, то все операнды выражения преобразуются в строки, и на выходе получается строка. с другой стороны, операция "-" для строк не определена. зато она определена для чисел, поэтому джаваскрипт пытается преобразовать все операнды операнды в числа (если это возможно - и в данном случае это так) и выдать числовой результат, а не Nan
Даже специальный сайт создали для таких как вы
https://0.30000000000000004.com/
Trowy Trowy 06.12.201808:08 ответить ссылка 1.0
А что ему не понравилось в правом столбике во втором? Так любой язык false отдаст.
Скоро уже 2019 год, а кто-то всё еше считает, что шутки про динамическую типизацию смешные
Trowy Trowy 06.12.201808:11 ответить ссылка 0.4
Шутки про попытки решить эти проблемы с помощью TypeScript смешные
Автор картинки - долбоеб. Ума на мейнстримовые шутки про JS хватило, а ума покурить как сам JS, так и базовые вещи - нет.
1) Всякие приведения чисел и строк, тем более массивов, булеанов - это, конечно, пиздец.
2) Floating point - это не пиздец, это везде, выше написали уже
3) true == 1 и true === 1 - так в жс специально запилили костыль-оператор "===" для точного сравнения без приведения типов.
DarkCoder DarkCoder 06.12.201810:35 ответить ссылка -1.3
Пиздец, что-то из чёрной магии.
Seedan Seedan 09.12.201803:34 ответить ссылка 0.0
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Шт' ■’Ч&иЦТЩ Ш			
1 £ м »•Vfl 1 '			!j Я ХОЧУ ВЫУЧИТЬ JAVASCRIPT
/—		
> [10, 9, 8, 3, 2, 1, 0].sorto		
[0,	1, 10, 2, 3, 8, 9]	1 ' Vj *
Ч		1 ^ i
подробнее»

it-юмор geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор js сортировка

Я ХОЧУ ВЫУЧИТЬ JAVASCRIPT /— > [10, 9, 8, 3, 2, 1, 0].sorto [0, 1, 10, 2, 3, 8, 9] 1 ' Vj * Ч 1 ^ i
Jk.	Gender	Ratii
	undefined	
	male	
	female	
m	male > [6,	-2, ly
<• Array (4) [
> I
-7].sort()
-2, -7, 2, 6 ]