ďťż

Ładny brzuch

ponieważ nie znalazłem odpowiedniej funkcji zaokrąglającej liczby do dwuch miejsc po przecinku (może ktoś jednak taką zna?) napisałem ją:

String TForm1::dziesietne(String liczba) { String s; TSysCharSet sep = TSysCharSet() << '.' << '\t'; TStringList* list = new TStringList(); s = liczba; ExtractStrings(sep,sep,s.c_str(),list); if (list->Count == 2) {  if (list->Strings[1].Length() == 1) s+="0";  else if (list->Strings[1].Length() > 2)  {    if (list->Strings[1].operator [](2) < 5)    {      ShowMessage("Zaokrąglij w dol");      String temp = list->Strings[0];      temp+=".";      temp+=list->Strings[1].operator [](0);      temp+=list->Strings[1].operator [](1);      s = temp;    }    else    {      ShowMessage("Zaokrąglij w gore");      String temp = list->Strings[0];      temp+='.';      temp+=list->Strings[1].operator [](0);      int i = StrToInt(list->Strings[1].operator [](1));      i++;      temp+=IntToStr(i);      s = temp;    }  } } delete list; return s;

i problem jest w tym, że funkcja działa tylko gdy jest 1 miejsce po przecinku (dodaje zero na koniec) lub 2 miejsca. w przeciwnym wypadku pojawia się błąd:
"Project FakturyUE.exe raised exception class EAccessViolation with Message 'Access violation at address 40009720 in module rtl60.bpl. Read of address E9BC2603'. Process Stopped. Use Step or Run to continue"
i otwiera się plik 'dstring.h'

Czy wie ktoś co jest w tej funkcji nie tak i jak to naprawić?



Twój kod jest dość niezrozumiały powiedz do czego on ma służyć i podaj cały kod; a jeśli chodzi o dwa miejsca po przecinku to możesz samemu napisać odpowiedznią funkcję to banalne. Dlaczego uwazam twoj kod za niezrozumialy, dlatego ze brak w nim komentarzy i przejzystosci

a może tak zrobić:
double a= 2.123456;
int b=a*100;
a=(double)b/100;

edit
jest jedna wada zaokrągla w dół

edit2
wersja poprawiona

double a= 32.124456;
a=a*100+0.5;
int b=a;
a=(double)b/100;
Użytkownik pablo295 edytował ten post 04 grudzień 2005, 23:05
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •