il numero a virgola mobile memorizzato nella variabile float ha un altro valore [duplicato]

0

Sto leggendo un libro sulla programmazione in C di "King.K.N" e sto leggendo la seguente dichiarazione:

If we store 0.1 in a float variable, we may later find that the variable has a value such as 0.0999999999999999987

Ma non riesco a capire perché la variabile di tipo float possa avere un valore diverso?

    
posta Higgs 29.06.2015 - 12:28
fonte

1 risposta

6

prova per memorizzare decimale 0.1 in una variabile float. Quando parliamo di float in C (e nella maggior parte delle altre lingue), i numeri secondo lo standard IEEE per l'aritmetica virgola mobile (IEEE 754) sono intesi.

I numeri in virgola mobile sono memorizzati nella base 2 e 1/10 non può essere convertito in una frazione binaria senza perdite.

Pensa a come provi a memorizzare 1/3 nella base 10: finisci con 0.33333 . Ma 3 * 0.33333 non è uguale a 1 , ma a 0.99999 .

Per maggiori dettagli, leggi Cosa dovrebbe sapere ogni scienziato informatico sull'aritmetica a virgola mobile

    
risposta data 29.06.2015 - 12:37
fonte

Leggi altre domande sui tag