IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Prosba o radu - zaokrouhlování na celé 100 v jazyce C

Aktivity
Avatar
Martin Tahadlo:28.4.2017 22:41

Ahoj, protřeboval bych poradit se zaokrouhlováním v jazyce C. Programuji svou semestrální práci na téma výpočet čisté mzdy a narazil jsem na problém. Superhrubá mzda, která tvoří základ pro výpočet daně, se zaokrouhluje na celé stokoruny a já nemám tušení, jak toho jde docílit v jazyce C. Budu vděčný za každou radu. :)

 
Odpovědět
28.4.2017 22:41
Avatar
LacoS.
Člen
Avatar
LacoS.:19.7.2017 16:18
float nezaokruhlene = 1234.56;
float zaokruhlene;
int pom;
pom = nezaokruhlene + 50;
pom = (int)(pom /100) * 100;
zaokruhlene = pom;
 
Nahoru Odpovědět
19.7.2017 16:18
Avatar
Jakub Šilhavý:20.7.2017 18:09

Já používám postup, o kterém jsem se dočetl zde :).

#include <stdio.h>

void Round(float *x, float p) {
    *x = (*x / p + 0.5) * p;
}


int main() {
    float x = 456.945242;

    printf("before = %f\n",x);
    Round(&x,0.01);
    printf("after = %f\n",x);
    return 0;
}
Nahoru Odpovědět
20.7.2017 18:09
Život je pes, a proto žít je psina.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Martin Tahadlo
rikenbekr:22.7.2017 20:30

Asi nejjednodušší bude:

//roundTo == přesnost (100)
roundedNum =- (num%roundTo);
Editováno 22.7.2017 20:30
Nahoru Odpovědět
22.7.2017 20:30
In world without fences and walls, who needs Gates and Windows?
Avatar
rikenbekr
Člen
Avatar
Odpovídá na rikenbekr
rikenbekr:22.7.2017 20:44

Asi nejjednodušší bude:

//roundTo == přesnost (100)
roundedNum =- (num%roundTo);

//EDIT: sorry, ale pozdě jsem si uvědomil že tohle je jen dolů

roundedNum = (diff = num%roundTo) > roundTo/2 ? num+(100-diff) : num-diff;

Test online :)
https://ideone.com/YSlY9O
//EDIT2: nejde editace :)

Nahoru Odpovědět
22.7.2017 20:44
In world without fences and walls, who needs Gates and Windows?
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.