Não ficou muito claro na explicação, por que não posso utilizar Long ou Complexo para o salário?
Não ficou muito claro na explicação, por que não posso utilizar Long ou Complexo para o salário?
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.