Single e imprecisione

sabato 20 ottobre 2007 - 17.45

Pasalino Profilo | Newbie

Una domanda banale ma che non capisco!

Single c = 12;
Single d = 12.00f;
Single de = 12.23f;
Single r = 12.1f;

Scrivendo questo semplice codice (molto semplice) ho avuto ben 3 errori e cioè:

se con il debug vado a vedere i valori contenuti mi da questo
c=12
d=12
de=12.2299995
r=12.1000004

sapete dirmi il motivo? Io sto impazzendo!

alx_81 Profilo | Guru

>Una domanda banale ma che non capisco!
>
> Single c = 12;
> Single d = 12.00f;
> Single de = 12.23f;
> Single r = 12.1f;
>
>Scrivendo questo semplice codice (molto semplice) ho avuto ben
>3 errori e cioè:
>
>se con il debug vado a vedere i valori contenuti mi da questo
>c=12
>d=12
>de=12.2299995
>r=12.1000004
>
>sapete dirmi il motivo? Io sto impazzendo!

DA MSDN:

"Single-precision numbers store an approximation of a real number
When you work with floating-point numbers, keep in mind that they do not always have a precise representation in memory"

leggi inoltre informazioni aggiuntive qui
http://msdn2.microsoft.com/en-us/library/system.single(VS.80).aspx

Si tratta comunque di tipi floating-point e la loro precisione non è garantita, tantomeno se convertiti.
Ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Pasalino Profilo | Newbie

E hai consigli su come fare per renderli più precisi possibili?
Ho fatto alcune prove e sembra che cmq non incida sul risultato finale cioè quando viene visualizzato, viene visualizzato il valore corretto, spero di non sbagliarmi!

Ok dopo qualche giorno di prove ho notato che cmq anche se questi valori sono rappresentati in questo modo, poi vengono cmq approssimati al loro esatto valore quando visualizzati
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5