A volte usando i double ottengo risultati inattesi
Ad esempio:
double x = 1.025
double y = 1-x;
orbene se leggo y.ToString() mi da -0.0249999999999 anzichè un atteso -0.025
Qualcuno mi sa spiegare il perchè ed eventualmente come risolvere?
A volte usando i double ottengo risultati inattesi
Ad esempio:
double x = 1.025
double y = 1-x;
orbene se leggo y.ToString() mi da -0.0249999999999 anzichè un atteso -0.025
Qualcuno mi sa spiegare il perchè ed eventualmente come risolvere?
il computer manovra i numeri in formato binario e la matematica insegna che è possibile rappresentare come decimali finiti solo le frazioni che hanno a denominatore la base del sistema numerico, i suoi fattori o combinazioni di esse
esempio in base 10:
è possibile rappresentare come decimali finiti solo divisioni per 10, 2, 5 o potenze (4,200,625...)
in base 2 l'unico fattore primo è 2, di conseguenza ogni divisione per un numero che non è potenza di 2 restituisce un numero periodico, che viene approssimato
nel tuo caso devi usare delle librerie numeriche a precisione arbitraria
(consulta la documentazione .net, dovrebbero esserci)
Sposto in Visual Basic e .NET Framework.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza