Float a stringa: Che cosa è una parte Esponente?
-
06-09-2019 - |
Domanda
ho scritto una piccola funzione in C, che quasi fare lo stesso lavoro come funzione standart `fcvt'. Come forse sapete, questa funzione prende un galleggiante / doppio e fare una stringa, che rappresenta il numero di caratteri ANSI. Tutto funziona; -)
Ad esempio, per il numero di 1,33,334 mila, la mia funzione mi dà corda: "133334" e istituito speciali variabile intera `decimal_part', in questo esempio sarà 1, il che significa che in parte decimale solo 1 simbolo, tutto il resto è una frazione .
Ora Sono curioso di sapere cosa fare funzione di standart C `printf'. Si può prendere un% o% e come stringa di formato. Cito per% e (link junked):
"doppio" argomento viene emesso in notazione scientifica
[-] m.nnnnnne + xx
... L'esponente contiene sempre due cifre.
E ha detto: "L'esponente contiene sempre due cifre". Ma che cosa è un esponente? Questa è la domanda principale. E inoltre, come ottenere questo 'esponente' dalla mia funzione di cui sopra o da `fcvt'.
Soluzione
La notazione potrebbe essere spiegato meglio se espandiamo la e:
[-]m.nnnnnn * (10^xx)
In modo da avere una cifra di m (da 0 a 9, ma sarà sempre e solo essere 0 se l'intero valore è 0), e diverse cifre di n. Credo che potrebbe essere meglio per dimostrare con esempi:
1 = 1.0000 * 10^0 = 1e0
10 = 1.0000 * 10^1 = 1e1
10000 = 1.0000 * 10^4 = 1e4
0.1 = 1.0000 * 10^-1 = 1e-1
1,419 = 1.419 * 10^3 = 1.419e3
0.00000123 = 1.23 * 10^-5 = 1.23e-5
È possibile cercare la notazione scientifica fuori di Google, ma è utile per esprimere numeri molto grandi o piccoli come 1.232.100 mille miliardi sarebbe 1.2321e24 (non ho davvero contare, esponente può essere impreciso).
In C, penso che si può effettivamente estrarre l'esponente dai primi 12 bit (il primo è il segno che si dovrà ignorare). Vedere: IEEE758-1985 virgola mobile
Altri suggerimenti
L'esponente è la potenza 10 viene sollevata per poi moltiplicato per la base.
SI è spiegato in wikipeida. http://en.wikipedia.org/wiki/Scientific_notation
m.nnnnnne+xx
è logicamente uguale a m.nnnnnn * 10 ^ +xx
Nella notazione scientifica, l'esponente è il dieci al potere XX, in modo da 1234,5678 può essere rappresentato come 1.2345678E03 dove la forma normalizzata viene moltiplicato per 10 ^ 3 per ottenere la risposta "reale".
400 = 4 * 10 ^ 2
2 è l'esponente.
Se si scrive un numero in notazione scientifica, allora l'esponente è parte di quella notazione.
Si può vedere una descrizione completa qui http://en.wikipedia.org/wiki/Scientific_notation , ma in fondo è solo un altro modo di scrivere un numero, in genere utilizzato per molto grandi o molto piccoli.
Diciamo che avete il numero 300, che è pari a 3 * 100, o 3 * 10 ^ 2 in notazione scientifica.
Se si utilizza% e che verrà stampato come 3.0e + 02