[python] numeric limits
n4rc0s
n4rc0s@gmail.com
Ven 11 Maggio 2007 20:18:52 CEST
Sergio Perticone wrote:
> Sergio Perticone wrote:
>
>> Esiste in python qualcosa che equivale al C++-ish:
>> std::numeric_limits<>::max()
>>
>> ?
>>
>> Grazie,
>>
>> s.
>>
>>
>
> Uhm, ho trovato sys.maxint
>
> s.
>
no aspetta le cose non stanno proprio così :-)
per gli interi ci sono due tipi: int e long. Sono stati unificati a
partire dal 2.3. Credo ciò significhi
che te ne puoi tranquillamente infischiare: è l'interprete che decide se
usare l'uno o l'altro... Il limite maxint
è per gli int. I long non hanno upper bound. Se non capisco male quello
che succede è che se fai operazioni con
int e superi il limite lui li converte silenziosamente in long e
continua tranquillo. I long invece restano long. Non viene effettuata
nessuna conversione implicita da long a int. La devi esplicitare con un
cast, ma se vai fuori del limite ottieni nuovamente un long.
[QUOTE]
integers (type |int|) are implemented with C longs (signed 32 bits,
maximum value is |sys.maxint|)
Long integers (type |long|) have unlimited size (only limit is system
resources).
[/QUOTE]
vediamo un po'...
[CODE]
>>> import sys
>>> a=sys.maxint
>>> a
2147483647
>>> type(a)
<type 'int'>
>>> a+=1
>>> type(a)
<type 'long'>
>>> a
2147483648L
>>> a/=2
>>> a
1073741824L
>>> type(a)
<type 'long'>
... a proposito dei cast...
>>> a=sys.maxint
>>> a+=1
>>> type(a)
<type 'long'>
>>> type(int(a))
<type 'long'>
[/CODE]
come vedi il cast a int ha restituito un long perché eravamo fuori dal
limite.
get the picture?
ciao
n4
Maggiori informazioni sulla lista
palermo