Qual è il modo migliore per emulare il virgola mobile a precisione singola in python? (O altri formati in virgola mobile per quella materia?) Basta usare i ctype?Modo corretto per emulare il virgola mobile a precisione singola in python?
risposta
Se l'applicazione adatta alle matrici/matrici, è possibile utilizzare NumPy con float32
Se numpy
(l'ottimo suggerimento di altre risposte) è inapplicabile per voi (ad esempio, perché sei in un ambiente che non consente estensioni arbitrarie di terze parti), anche il modulo array nella libreria standard Python è corretto - il tipo di codice 'f'
fornisce float a 32 bit. Oltre a quelli e ai (soliti) float a doppia precisione, non c'è molto per "altri formati in virgola mobile" - cosa avevi in mente? (ad esempio, gmpy
offre il supporto modesto di GMP per i float con dimensioni di bit arbitrarie molto più lunghe, ma è in effetti modesto, ad esempio, nessuna funzione trigonometrica).
come su ctypes.c_float dalla libreria standard?
È possibile utilizzare il modulo struct
di Python per troncare un float a 64 bit alla precisione di un float a 32 bit.
Ad esempio:
>>> x = 1.1122334455667788
>>> x
1.1122334455667788
>>> struct.unpack('f', struct.pack('f', x))[0]
1.1122334003448486
far di conto solo con i carri a 32 bit, si avrebbe bisogno di applicare questa operazione troncamento al risultato di ogni operazione aritmetica.
- 1. Lua - imballaggio numeri a virgola mobile in singola precisione IEEE754
- 2. Precisione arbitraria in virgola mobile Python disponibile?
- 3. Precisione limite in virgola mobile?
- 4. Precisione scarsa della riduzione per la virgola mobile a precisione singola
- 5. Perché il galleggiante è "a precisione singola"?
- 6. Converti esadecimale in virgola mobile
- 7. Libreria per virgola mobile in virgola mobile Math in .NET
- 8. A che precisione stampa Perl i numeri in virgola mobile?
- 9. Precisione a virgola mobile SQL limitata a 6 cifre
- 10. Perdita di precisione da Int a virgola mobile a conversione
- 11. La precisione a virgola mobile può essere dipendente dal thread?
- 12. Mantenimento della precisione di virgola mobile con una media mobile
- 13. Come si imposta la precisione in virgola mobile in Perl?
- 14. JavaScript ha una precisione del numero a virgola mobile doppia?
- 15. Trattare con problemi di precisione in numeri in virgola mobile
- 16. C++ perdita di precisione in virgola mobile: 3015/0.00025298219406977296
- 17. Numeri in virgola mobile ad alta precisione in Haskell?
- 18. Precisione in virgola mobile <-> conversione stringa
- 19. Problema con funzionamento in virgola mobile di precisione in C
- 20. Modo per ottenere valori speciali a virgola mobile in CUDA?
- 21. In che modo printf e scanf gestiscono i formati di precisione in virgola mobile?
- 22. estesa di precisione in virgola mobile libreria C/C++
- 23. Conversione da virgola mobile a decimale in SQL Server 2008
- 24. Esiste un suffisso letterale in virgola mobile in C++ per fare una precisione doppia al numero?
- 25. Un'altra domanda a virgola mobile
- 26. aumento della precisione dei numeri in virgola mobile
- 27. Rappresentazione piacevole di un numero in virgola mobile in python
- 28. Converti virgola mobile in virgola mobile (SQL Server)
- 29. Converti int in galleggiante a 16 bit (virgola mobile a mezza precisione) in C++
- 30. Numeri a virgola mobile a virgola fissa in C/C++
Cosa intendi per "emulare"? Leggi i float dai blob binari? Esegui la matematica con precisione singola e ottieni gli stessi risultati di un'altra lingua? (Se quest'ultimo, si noti che la matematica "float" in C su x86 viene effettivamente valutata in 80-bit e ridotta a 32-bit quando viene memorizzata.) –