Bonjour Messieurs,
J’ai un probleme super zarbe.
En C#, je fais un Math.round(variable,2), et je continue a avoir 200 chiffres apres la virgule …
Pour etre sur de rien raté, j’ai blindé de Math.round (du coup c’est pas pertinent, mais c’etait pour etre sur) :
[code] public bool FormatAbbaccusInformation(DataRow dr, out double currentPan, out double currentSC, out double currentDays, out double currentHours)
{
currentPan = -1;
currentSC = -1;
currentDays = -1;
currentHours = -1;
// On essaie de lire le PAN
try
{
currentPan = (Double)dr["pan"];
}
catch
{
// on y arrive pas, on quitte en disant que les resultats de cette ligne sont non exploitable en renvoyant false
//System.Console.WriteLine("Ligne [" + dr..ToString() + "] -- PAN Invalide");
return (false);
}
// On essaie de lire le nombre de jour.
try
{
currentDays = Math.Round((Double)dr["days"],2);
currentHours = Math.Round(currentDays * 7.5,2);
}
catch
{
// on y arrive pas, on va tenter de voir si c'est pas parce que la colonne heure est presente
//System.Console.WriteLine("Ligne [" + dr.ToString() + "] -- Days Invalide");
// On essaie de lire le nombre d'heure.
try
{
currentHours = Math.Round((Double)dr["hours"],2);
currentDays = Math.Round(currentHours / 7.5,2);
}
catch
{
// on y arrive pas, pas de charge associé
currentHours = -1;
currentDays = -1;
return (false);
}
}
// On essaie de lire le Service Code
try
{
currentSC = (Double)dr["service code"];
}
catch
{
// On y arrive pas, on le mets dans les "unknown service code"
//System.Console.WriteLine("Ligne [" + dr.ToString() + "] -- Service code Invalide");
}
// on a un pan de valide, et une charge valide. Si le sc est invalide il est à -1, sinon il a la bonne valeur
// on sort en succes
System.Console.WriteLine("Ligne [" + dr.ToString() + "] -- Succes -- [" + currentPan + "/" + currentSC + "/" + currentDays + "/" + currentHours + "]");
return (true);
}[/code]
Mes variables sont des doubles.
Lorsque l’on passe ici, le round semble bien marcher, car le System.Console.WriteLine me sort bien des nombres avec 2 chiffres apres la virgule.
Par contre, quand j’utilise plus loin currentHours et currentDays dans une datatable, j’en ai certain avec plein de chiffre apres la virgule (cf screenshot).
Comment ca se fait ??
Normalement, apres le round, il devrait resté sur 2 chiffres non ?
Comment faire pour etre sur que l’arrondi est bon ?