2013-02-28 3 views
2

I J, 0%0 (zero divided by zero) дает 0 в качестве ответа. Однако _%_ (бесконечность, деленная на бесконечность) дает ошибку NaN? Почему он не определен, а 0%0 есть?Почему в J 0% 0 определено, но _% _ дает ошибку NaN?

+0

+1 Sheesh, по крайней мере, это может дать '_.', неопределенный. – MPelletier

+1

Оба должны давать 'NaN' (или' _.'). Однако целесообразно определить '0% 0' как' 0'; для этого нет никаких аналогичных причин для '_% _'. См. [Эссе/Неопределенный] (http://www.jsoftware.com/jwiki/Essays/Indeterminate). – Eelvex

ответ

0

Я думаю, что комментарий от Eelvex дает ответ. бесконечность над бесконечностью неопределенна. Неопределенный символ в J равен _.. Однако это существует только для того, чтобы заботиться о данных, поступающих из внешнего источника, и J-предложения не должны давать _. в качестве ответа.

Если 0 over 0 определяется как 0, это связано с тем, что оно имеет практическое применение. Таких практических применений для бесконечности над бесконечностью нет.

1

«Хотя нуль, деленный на ноль, является неопределенным, желательно обеспечить фиксированное отношение для него в среде программирования, чтобы уменьшить количество обстоятельств, когда необходимо прервать выполнение проблемы». Это объяснение Э. МакДоннелла из статьи Zero Divided by Zero.

Проблема с Infinity заключается в том, что это не значение, но оно рассматривается как значение. Если бы Бесконечность была значением, то _%_ был бы Единым, как и типичный случай, когда число делится само по себе. (J реализует 0% 0 как исключение из этого шаблона.) Моя интуиция заключается в том, что J было бы лучше, если бы _%_ вычислялся как разрешающий один, но это не так. Поэтому, хотя я не могу дать ответ на ваш вопрос, я предлагаю, чтобы из математики не было ответа, и никто не может быть найден в J-документации или комментариях.

Смежные вопросы