[python] numeric limits

Sergio Perticone g4ll0ws@gmail.com
Ven 11 Maggio 2007 22:16:16 CEST



n4rc0s wrote:
> 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.

Ok, afferrato.

> 
> [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?

Sì, adesso è più chiaro... avevo intuito del casting automatico da int a 
a long ma non sapevo del contrario e che il long non fosse limitato.
Il limite del float invece (sul mio pc) sembra attorno a 2^1023.

Grazie della spiegazione.

> 
> ciao
>   n4
> 

Ciáuz,

s.

> _______________________________________________
> palermo mailing list
> palermo@lists.linux.it
> http://lists.linux.it/listinfo/palermo
> 


Maggiori informazioni sulla lista palermo