zaokruhlenie na 2 desatinne cisla [C]

Programovacie jazyky, rady, poradňa...
G0lDiER_
King
King
Používateľov profilový obrázok
Príspevky: 1948
Registrovaný: 16 máj 2007, 16:09
Bydlisko: Topolcany
Kontaktovať používateľa:

zaokruhlenie na 2 desatinne cisla [C]

Príspevok od používateľa G0lDiER_ »

caute, prosim vas ako najjednoduhsie zaokruhlim float na dve desatinne cisla?
nasiel som takuto funkciu:

Kód: Vybrať všetko

float zaokruhli(float x)
{
    return floorf(x * 100 + 0.5) / 100;
}
v podstate funguje, ale mam takyto problem:

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
float zaokruhli(float x)
{
        return floorf(x * 100 + 0.5) / 100;
}
int main()
{
        float suma=7166.432617, zaokruhlene;
 
        printf("suma je: %f\n", suma);
        zaokruhlene=zaokruhli(suma);
        printf("zaokruhlene1 je %f\n", zaokruhlene);
        printf("zaokruhlene2 je %f\n", zaokruhli(suma));
        return 0;
}
preco druhe a tretie printf vypisuje rozne hodnoty? :/ neviem sa z toho dostat.
pomoze mi pls, dik.
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: zaokruhlenie na 2 desatinne cisla [C]

Príspevok od používateľa xadman »

Skús toto

Kód: Vybrať všetko

%.2f
Hentaké funkcie sú zbytočné :)
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: zaokruhlenie na 2 desatinne cisla [C]

Príspevok od používateľa c-ice »

ehm pokial viem tak tymto len formatujes vystup a nezaokruhlujes co je rozdiel :) ale presne to formatovanie mu tam chyba
ale keby chcel riesit aby sa mu spravne cislo uchovavalo tak asi tu funkciu by mal modifikovat a pouzit vsade radsej double...

Kód: Vybrať všetko

double zaokruhli(double x)
{
	int temp = floor(100*x +0.5); //double na int
	return (double)temp/100; //z int na double
}
v podstate klucove je ten casting z double na int a potom z int na double
G0lDiER_
King
King
Používateľov profilový obrázok
Príspevky: 1948
Registrovaný: 16 máj 2007, 16:09
Bydlisko: Topolcany
Kontaktovať používateľa:

Re: zaokruhlenie na 2 desatinne cisla [C]

Príspevok od používateľa G0lDiER_ »

jasne, potreboval som to ulozit do premennej, neslo len o ten formatovany vystup.
tvoje riesenie funguje, diky moc.
btw na internete vsade pisali rozne riesenia, prevadzali to zbytocne na stringy a podobne, ale to, co ty tam nikto nepisal.
Napísať odpoveď