1
resposta

Utilização de Long e Complexo

Não ficou muito claro na explicação, por que não posso utilizar Long ou Complexo para o salário?

1 resposta

Diego,

O Python 3 não possui limites superiores ou inferiores em inteiros, e não existe uma definição matemática para ordenar números complexos arbitrários (embora as partes reais ou imaginárias de dois números complexos possam ser ordenadas separadamente). No Python 2 tem, e tb uma precedência no tipo numérico resultante obedece a ordem:

int -> long -> float -> complex

independente da operação matemática.

>>> 3 + 2             # int + int = int
5  
>>> 3 + 2L            # int + long = long
5L
>>> 3 + 2L + 3.       # ... + float = float
8.0
>>> 3 + 2L + 3. + 0j  # ... + complex = complex
(8+0j)

A conversão de tipo pode ser feita com as funções: int; long; float; e complex.

>>> pi = 3.1415926535897931
>>> r = 5
>>> a = pi*r**2
>>> a = int(pi*r**2)
>>> a
78

>>> c = complex(3,-4)
>>> c
(3-4j)
>>> float(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float; use abs(z)
</module></stdin>

Como pode ver, não é possível converter um complexo para float, ou mesmo int e long. Para se converter um complexo se deve trabalhar em uma de suas componentes, parte real ou imaginária, ou com o seu método, como abaixo:

>>> d = float(c.real)
>>> d
3.0
>>> c.real
3.0
>>> abs(c)   # retorna o módulo do complexo: sqrt(real**2 + imag**2)
5.0

Concluindo no Python 2 é muito difícil não cometer erros na conversão de salario nestes tipos de números, mesmo porque não consigo pensar em variável COMPLEX ou LONG para UM CAMPO como este.