J'ai été la lutte contre la précision décimale en C# à venir à partir d'un SQL Décimal (38,30) et j'ai enfin fait tout le chemin à un arrondi bizarrerie. Je sais que je suis probablement donnant sur l'évidente ici, mais j'ai besoin d'un peu de perspicacité.
Le problème, je vais avoir, c'est que le C# n'est pas de produire ce que je considère être la cohérence des résultats.
decimal a = 0.387518769125m;
decimal b = 0.3875187691250002636113061835m;
Console.WriteLine(Math.Round(a, 11));
Console.WriteLine(Math.Round(b, 11));
Console.WriteLine(Math.Round(a, 11) == Math.Round(b, 11));
Les rendements
0.38751876912
0.38751876913
False
Heu, 0.38751876913? Vraiment? Ce qui me manque ici?
À partir de MSDN:
Si les chiffres dans les décimales de position est impair, il est modifié pour un même chiffre. Sinon, il est laissé inchangé.
Pourquoi suis-je voir des résultats incohérents? Une telle précision n'est pas en changeant le 'chiffre dans le nombre de décimales position"...