Как язык [x] обрабатывает неопределенные формы, такие как 0^0?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/9788

  •  16-10-2019
  •  | 
  •  

Вопрос

По мере того, как X переходит к 0, пределы x^0 и 0^x перейдут до 1 и 0 соответственно. Некоторые говорят, что лучшее значение для 0^0 зависит от контекста, другие говорят, что значение 0^0 должно быть 1. Мне интересно знать, что говорят ваши языковые реализователи. Кажется, нет консенсуса. Например, в Activestate Perl 5.12.0:

C:\>perl -e "print 0**0"
1

В то время как в Mathematica 6.0:

In[1]:= 0^0
        During evaluation of In[1]:= Power::indet:
        Indeterminate expression 0^0 encountered. >>
Out[1]= Indeterminate

Мне также интересно узнать ваше мнение по этому вопросу: что должно быть 0^0? А также, независимо от того, вводили ли вы ошибку в программу, которую вы писали (или было трудно отлаживать программу) из -за того, как ваш язык обрабатывает неопределенные формы?

Это было полезно?

Решение

Согласно с это Статья в Википедии,

"Большинство языка программирования с функцией мощности реализованы с использованием функции IEEE POW и, следовательно, оценивают 0^0 как 1. Стандарты более позднего C и C ++ описывают это как нормативное поведение. Стандарт Java требует этого поведения. .Math.pow также относится к 0^0 как 1. "

Другие советы

Python:

>>> for t in [int, float, complex, fractions.Fraction, decimal.Decimal]:
...     print(t, t(0)**0)
... 
<type 'int'> 1
<type 'float'> 1.0
<type 'complex'> (1+0j)
<class 'fractions.Fraction'> 1
Traceback (most recent call last):
  ...
decimal.InvalidOperation: 0 ** 0

Google говорит:

0^0 = 1

Delphi получил 2 значения поплавок: NaN а также Infinity. Анкет Это возвращается в случае странности.

Но у него нет встроенной функции экспоненты.

^ для указателей, как в «Эй, ты там, я указываю на тебя!»

Лицензировано под: CC-BY-SA с атрибуция
scroll top