Cioè, per esempio, hanno il seguente numero codificato in IEEE-754 precisione singola:Come convertire float in double (entrambi memorizzati nella rappresentazione IEEE-754) senza perdere precisione?
"0100 0001 1011 1110 1100 1100 1100 1100" (approximately 23.85 in decimal)
Il numero binario di cui sopra è memorizzato nella stringa letterale.
La domanda è, come posso convertire questa stringa in una rappresentazione a doppia precisione IEEE-754 (un po 'come la seguente, ma il valore non è lo stesso), SENZA perdere la precisione?
"0100 0000 0011 0111 1101 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1010"
che è lo stesso numero codificato in IEEE-754 doppia precisione.
Ho provato a utilizzare il seguente algoritmo per convertire prima la prima stringa in numero decimale, ma perde precisione.
Sto usando Qt C++ Framework su piattaforma Windows.
MODIFICA: Devo scusarmi forse non ho ottenuto la domanda chiaramente espressa. Quello che voglio dire è che non conosco il vero valore 23.85, ho solo ottenuto la prima stringa e voglio convertirla in una rappresentazione a doppia precisione senza perdita di precisione.
@tenfour Penso che sia perché sta immagazzinando come stringa – Caesar
La seconda stringa binaria è _not_ lo stesso numero come il primo, ma in 'double' precisione. Qual è il problema che cerchi di risolvere? –
Daniel Fisher è corretto; quelli non sono in alcun modo lo stesso numero (il primo è 23.84999847412109375, il secondo è 23.85000000000000142108547152020037174224853515625). –