Disponibilità: Unix.
Molti computer elaborano le operazioni con numeri in virgola mobile in conformità con il cosiddetto standard IEEE-754. Su un qualsiasi computer, alcune operazioni in virgola mobile producono risultati che non possono venire espressi con normali valori in virgola mobile. Per esempio, provate:
>>> import math >>> math.exp(1000) inf >>> math.exp(1000) / math.exp(1000) nan
(L'esempio precedente funziona su molte piattaforme. La DEC Alpha può essere una eccezione). ``Inf'' è un valore speciale, non numerico, nello standard IEEE-754 che sta per ``infinito'' mentre ``nan'' significa ``non un numero'' (``not a number''). Notate che, aldilà del risultato non numerico, nulla di speciale accade quando chiedete a Python di procedere con questi calcoli. Questo infatti è il comportamento predefinito nello standard IEEE-754, e se a voi funziona, smettete pure di leggere questo paragrafo.
In alcune circostanze, sarebbe meglio sollevare un'eccezione ed interrompere il processo nel punto in cui si rileva l'operazione errata. Il modulo fpectl è da usare in queste situazioni. Fornisce il controllo sui numeri in virgola mobile per l'hardware di molte case produttrici, consentendo all'utente la possibilità di abilitare la generazione di un SIGFPE ogni volta che dovrebbe venire sollevata una eccezione IEEE-754 come Division by Zero, Overflow, oppure Invalid Operation. Insieme ad un paio di macro wrapper, inserite nel codice C comprendente il sistema Python in uso, SIGFPE viene intercettata e convertita nell'eccezione Python FloatingPointError.
Il modulo fpectl definisce le seguenti funzioni e può sollevare l'eccezione data:
) |
) |