Sto cercando di creare una classe in cui l'utente possa calcolare le operazioni mobili con una precisione particolare. Ad esempio, se l'utente desidera avere una precisione fino a 4 cifre, tutto inferiore a 0,0001 è zero e tutto ciò che è più grande di 9999 è inf.
Penso che il modo migliore sia quello di creare una matrice di bit (o forse di byte) per memorizzare il segno, la mantissa e l'esponente. Ad esempio, con una precisione di 4 cifre decimali, ho potuto calcolare quanti bit avrei bisogno di memorizzare il valore più piccolo e più grande e quindi creare array di quella dimensione.
Questo mi porta a due delle mie domande:
- Perché la precisione singola usa esattamente 8 bit per l'esponente e 24 per la mantissa (IEEE 754) anziché 10 e 53, o 12 e 51? È in qualche modo rilevante o è solo uno standard?
- Supponendo che avrò bisogno di 4 cifre di precisione per 9999, avrei bisogno di 14 bit ma quanto spazio ho bisogno per mantenere 0,0001 in 4 (decimale) precisione della cifra?
Se la risposta alla prima domanda è "è solo uno standard" ho ancora un'altra domanda:
- Come faccio a scegliere il miglior esponente e mantissa per il mio problema?
Si prega di ignorare il fatto che i numeri più grandi e più piccoli potrebbero essere calcolati qui, come li farò solo "se". Non voglio usare double / float / etc per questo ho bisogno di come mi aspetto di utilizzare più memoria di un doppio avrebbe bisogno, ma non voglio usare troppo spazio.