chcialem sie dowiedziec jak zaokraglic liczbe double zeby pozostaly tylko dwie cyfry po przecinku(jak zawsze chodzi o pieniadze :) )
MessageBox.Show((1234.5678).ToString("C"));
MessageBox.Show(String.Format("{0:C}", 1234.5678));
Console.WriteLine("{0:C}", 1234.5678);
private double round(double val)
{
val = val*100; // 100 poniewaz 2 miejsca po przecinku
double floorVal = Math.Floor(val);
if ((val - floorVal) > 0.5)
{
floorVal += 1;
}
val = floorVal / 100;
return (val);
}
dziala dobrze wiec chyba dobrze jest :) , jak ktos ma cos lepszego to niech wali ( rozwiazanie powyzej mnie nie bawi :) )
Nie wiem po co chcesz zmniejszać precyzję liczby. Żeby mieć większe błędy zaokrągleń ????? Przecież o 2 miejsca po przecinku chodzi przy wyświetlaniu liczby (ew. przy samej zamianie na postać tekstową).
Najprościej to użyć klasy narzędziowej System.Math np.:
double d = 12.3456;
d = Math.Round(d, 2);
Math.Round zaokragla do najbliższej całkowitej liczby parzystej, wiec np 1.5 to bedzie 2 i 2.5 bedzie 2 , a nie o to mi chodzilo
Bzdury pleciesz - wystarczy zajrzec do dokumentacji:
msdn napisał(a)
Rounds a decimal value to a specified precision.
sorki , cos mi sie pomylilo
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.