Probaj ovu funkciju:
Code:
void FloatToString2(float mynumber, char cifra[]) {
int i;
// pretvaranje broja u znakove
cifra[0] = (long)mynumber / 100 + '0';
cifra[1] = ((long)mynumber / 10) % 10 + '0';
cifra[2] = (long)mynumber % 10 + '0';
cifra[3] = '.';
cifra[4] = ((long)(mynumber * 10)) % 10 + '0';
cifra[5] = '\0';
// ukloni vodece nule ako ih ima
while ((cifra[0] == '0') && (cifra[1] != '.')) {
for (i = 0; i < 5 ; i++)
cifra[i] = cifra[i+1];
}
return;
}
Ovo bi trebalo da ti formatira broj onako kako ti hoćeš.
Međutim, moguće je da ćeš povremeno imati problem sa decimalom.
U zavisnosti od interne reprezentacije brojeva u tvom CPU-u, zbog konačne tačnosti,
on ne može da prikaže sve moguće brojeve, već samo one koji mu se poklapaju sa
njegovim minimalnim inkrementom.
Npr. broj 123.7 može biti zapisan kao 123.699997, jer je to najpribližnije što se može postići u
tipu float sa preciznošću od 6 decimala.
Ova funkcija će ti od toga napraviti 123.6 umjesto 123.7.
No, to sve zavisi odakle dobijaš te svoje brojeve i kako radi float i zaokruživanje na tvojoj platformi,
što znači da možda u tvom slučaju i nećeš imati problema.
Ali eto, ako budeš imao slične probleme da znaš od čega je, pa da onda možeš da popravljaš (zaokruživanjem).