Почему Infinity/Infinity не 1?

If

Infinity === Infinity
>> true

и

typeOf Infinity
>> "number"

тогда почему

Infinity / Infinity
>>NaN

а не 1?


person Jayne Mast    schedule 15.09.2011    source источник


Ответы (4)


Остерегайтесь любых предположений, которые вы делаете об арифметическом поведении бесконечности.

Если / = 1, то 1 = . В более широком смысле, поскольку 2 = , также должно быть так, что / = 2.

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

person Marcelo Cantos    schedule 15.09.2011

Поскольку в спецификации сказано следующее:

Деление бесконечности на бесконечность дает NaN.

Я не математик, , но даже с этой точки зрения наличие 1 в результате не имеет смысла. Бесконечности могут быть разными, и только потому, что они равны в JavaScript, это не оправдывает того, чтобы рассматривать их как равные во всех других случаях (или позволять делению возвращать 1 в этом отношении). (edit: as Я же сказал, я не математик ;)).

person Felix Kling    schedule 15.09.2011
comment
Но почему это в характеристиках? - person Jayne Mast; 15.09.2011
comment
Потому что Бесконечность и Бесконечность иногда не одно и то же. Например, см. en.wikipedia.org/wiki/Hilbert%27s_paradox_of_the_Grand_Hotel. - person schnaader; 15.09.2011
comment
Хорошо, но тогда я должен был задать вопрос, почему Infinity === Infinity возвращает true - person Jayne Mast; 15.09.2011
comment
@Hierow Infinity был бы бесполезен, если бы возвращал false. Рассмотрим var x = Infinity; if( x == Infinity ) ... - person JJJ; 15.09.2011
comment
Не бывает разных бесконечностей. Смысл гостиницы Гильберта в том, чтобы показать, что все счетно бесконечные множества имеют одинаковую мощность, даже если некоторые из них кажутся больше других. Совершенно правильно утверждать, что ∞ = ∞. - person Marcelo Cantos; 15.09.2011
comment
@Hierow: Так сказано в спецификации, потому что вы можете математически доказать, что бесконечность, деленная на бесконечность, не определена. - person Mårten Wikström; 15.09.2011

Результат математически не определен. К джаваскрипту это не имеет никакого отношения. См. следующее объяснение.

person Mårten Wikström    schedule 15.09.2011
comment
Результат, который производит компилятор Javascript (что и интересует OP), имеет все отношение к Javascript. Тот факт, что он следует тому, что говорит математика, является бонусом. - person Jon; 15.09.2011
comment
Ну конечно, но этот дизайн не имеет ничего общего с самим языком. Язык реализует математическое понятие, поэтому ответ на вопрос математический и не имеет ничего общего с языком программирования. - person Mårten Wikström; 15.09.2011
comment
Согласованный. Но, как мне кажется, ответ на этот вопрос заключается в том, что в спецификации указано X. Ответ на вопрос почему в спецификации указано X, а не Y, как вы говорите, математический . - person Jon; 15.09.2011

Это узнаваемо из исчисления один! Это неопределенная форма!

person sparkle    schedule 15.09.2011
comment
Исчисление также говорит, что 1/0 бесконечно вместо, например, DivideByZeroException, но скажи это моему компилятору. - person Jon; 15.09.2011
comment
@Jon: 1/0 не определено, но lim(x->0) 1/x = Inf. Если вы используете стандартную математику, то есть. - person Hannes Ovrén; 16.09.2011