Proszę o pomoc. Mam pytanie dotyczące C++ Buildera, właśnie muszę zrobić w nim program. Chodzi mi o to, żeby liczbę którą obliczyło zaokrąglało do całości, a potem wpisywało do Editów. Tą drugą część mam:

Edit5->Text=FloatToStr(pp);
Edit6->Text=FloatToStr(n);
Edit7->Text=FloatToStr(w);


ale nie wiem, jak zrobić, żeby najpierw zaokrąglało. Jestem prawie pewna, że to funkcja Round, bo z tego co wyczytałam, wynikało, że to powinna być ta funkcja, jednak próbowałam wszystkich sposobów, jakie mi przyszły do głowy i nic.. Nie wiem kompletnie, jak jej użyć. Błagam o pomoc!

1

Odpowiedzi

Najlepsza Odpowiedź!
2010-01-05T00:17:38+01:00
Zrób tak:
na początku pliku dodaj plik nagłówkowy
#include <cmath>
lub
#include <math.h>

z następnie masz 2 funkcje:
floor lub ceil
floor to podłoga - zaokrągla w dół
ceil to sufit - zaokrągla w górę

Jeżeli chcesz zaokrąglenie w dół, to:

Edit5->Text=FloatToStr(floor(pp));
itd...

Jeżeli chcesz w górę to:
Edit5->Text=FloatToStr(ceil(pp));

A jeżeli chcesz pół na pół, czyli liczbe 4,2 zaokrąglamy w dół, a liczbę 4,6 w górę, to możesz zrobić spróbować, czy nie zadziała to co proponowałeś:

Edit5->Text=FloatToStr(Round(pp));
albo z małej litery
Edit5->Text=FloatToStr(round(pp));

A jak nie, to zrób własną fukncję, np.:

inline float zaokraglij(float x) {
float f = floor(x);
float u = x - f;
return f + (u<0.5 ? 0.0 : 1.0);
}

i jej użyj:
Edit5->Text=FloatToStr(zaokraglij(pp));

Ta funkcja sprawdza, czy różnica pomiędzy liczbą a podłogą jest mniejsza od 0.5. Jeśli tak, to zaokrąglenie powinno być w dół i zwraca podłogę. Jeśli różnica jest większa, tzn. że bliżej jest do sufitu, więc zwraca podłogę + 1