Oggi mi è capitato questo problema con i double. Dopo le operazioni che vedete di seguito, effettuavo un arrotondamento che mi ha permesso di evidenziare il problema. Il double
d è stato aggiunto come esempio corretto, prima avevo solo il double
risultato. Il problema è causato dalla memorizzazione binaria dei double come numeri a virgola mobile. Questo può causare non pochi problemi visto che il tipo double è utilizzato spesso per rappresentare i prezzi.
double risultato = 1.0675;
risultato = risultato * 100;
double d = Double.Parse(risultato.ToString());
Console.WriteLine(risultato);
Console.WriteLine(d);
Console.ReadLine();
Un'altra soluzione del problema è usare i decimal.
Technorati tags:
Csharp