Le soufflet de fonction est passée une chaîne "1004233" et imprime le résultat suivant:
D1 = 1,004233
D2 = ,00423299999999993
D3 = 4232,99999999993
D4 = 4232
C# perte de précision lors de la division d'une double
J'ai besoin de D4 pour imprimer 4233 et non 4232. Comment empêcher cette perte de précision de se produire?
public string someFunc(String s){
string retval = "0";
try{
int id = int.Parse(s);
double d = (double)id/(double)1000000;
Console.WriteLine("D1 = " + d);
d = d - Math.Truncate(d);
Console.WriteLine("D2 = " + d);
d = d * (double)1000000;
Console.WriteLine("D3 = " + d);
retval = "" + Math.Truncate(d);
Console.WriteLine("D4 = " + retval);
}catch(Exception ex){}
return retval;
}
+1, grand lien. – FrustratedWithFormsDesigner