2016-11-06 5 views
3

Мне интересно, как определить inf и -inf как int в Python 2.7. Я пробовал и кажется inf и -inf работает только как float.
Представление infinity как целое число в Python 2.7

a = float('-inf') # works 
b = float('inf') # works 

c = int('-inf') # compile error, ValueError: invalid literal for int() with base 10: 'inf' 
d = int('inf') # compile error, ValueError: invalid literal for int() with base 10: 'inf' 
+3

Вы не можете представить бесконечность как целое число, но представление с плавающей запятой имеет специальный случай, чтобы разрешить его. Вам нужно будет использовать представление с плавающей запятой. – Jezzamon

+0

@Jezzamon, используя представление float inf/-inf для представления int? Не могли бы вы показать мне, как? 'type (float)'! = 'type (int)', вам нужно явно преобразовать тип для преобразования float в int? –

+0

@Jezzamon, я попробовал, кажется, что 'double ('inf')' и 'double ('- inf')' тоже не работает? –

ответ

7

Подводя итог сказанному в комментариях

Там нет никакого способа, чтобы представить бесконечность в виде целого числа в Python. Это соответствует поведению многих других языков. Однако из-за динамической системы набора текста Python вы можете использовать float('inf') вместо целого числа, и он будет вести себя так, как вы ожидали.

Что касается создания «двойного» для бесконечности, то в Python существует только один тип с плавающей точкой, называемый float, в отличие от других языков, таких как Java, который использует термин float и double для чисел с плавающей запятой с различной точностью. В Python, floating point numbers usually use double-precision, они действуют так же, как и в Java.