» »

[C++] zaokroževanje števil

[C++] zaokroževanje števil

M4T3J ::

Katere funkcije uporabljate za zaokroževanje? Ker sem namrec sicer nekaj najdel samo ne vem točno kako bi uporabil to funkcijo(round)?Če bi bil kdo tak dober pa podal kakšen primer:))
Ni nam lahko!
  • spremenilo: snow ()

snow ::

1. Drugič prosim, če napišeš ime teme v skladu z PREBERI ME: označevanje topicov v oddelku programiranje!

2. Google: C++ round, najde med drugim: http://www.codeproject.com/cpp/floatutils.asp.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Matako ::

Hm, vprašanje ni čisto brezveze. Standardna (ajd!) mat. knjižnica (math.h) recimo sploh *nima* round(). Ima pa ceil() in floor(), ki zaokrožita na celo število navzgor ali navzdol. Iz tega lahko sestaviš round().
/\/\.K.

BigWhale ::

Nima?

$ man round
NAME
round, roundf, roundl - round to nearest integer, away from zero

SYNOPSIS
#include <math.h>

double round(double x);
float roundf(float x);
long double roundl(long double x);

...
CONFORMING TO
C99.

Nevem no...

Quikee ::

BigWhale:

>man round
entry not found

>gedit /usr/include/math.h

search "round" -> phrase not found.

Kje si ga te ti našel ? =)

snow ::

cmath - tukaj ne vidim round-a.
Poleg tega, pa se pri roundu ponavadi smatra, da izbereš število decimalk na katere zaokrožiš rezultat.


Če hočeš zaokroževanje in prikaz na določeno število mest uporabiš iomanip:
#include <iomanip>
using namespace std;

void test()
{
    float a = 1.005;
    cout << fixed << setprecision(3) << a << endl;
}



edit: Hmph... tole zgornje je na koliko cifer hočeš prikazovat/zaokroževat, ne na koliko decimalk :|
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Zgodovina sprememb…

  • spremenilo: snow ()

Matako ::

@BigWhale, pa saj ti lepo piše v tekstu, k isi ga kopiral "conforming to C99". Saj zato sem pa napisal "ajd" za standardno math.h knjižnico ;) - round() in prijatelji spadajo pod C99 specifikacijo, čeprav je čisto možno, da se ta math pojavlja v okoljih, ki sicer niso po C99. Zakaj pa ne.

Je pa tako, da se ne moreš na to zanesti, ker še vedno veliko C/C++ okolij in platform zna ne imeti te fukcije v math.h, zato je verjetno najbolje, da si narediš kak makro za te primere...
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()

zhigatsey ::

 
// roundTo
inline double roundTo(double num, int digits)
{
    int mul = (int)pow( (double)10, (double)digits );
    num *= mul;
    if (num > 0)
        num += 0.5;
    else
         num -= 0.5;
    num = (int)num;
    num /= mul;
    return num;
}


Klele je funkcija, za zaokroževanje... Če je kakšna pomankljivost, oz.
če se da narediti na boljši način bodo pa drugi povedal.... Tole je samo moj prispevek....
Ne sme manjkati math....

worxer ::

Men je na enostavn način ratal nardit.
iStevilo = dStevilo + 0.5

Zgodovina sprememb…

  • spremenil: worxer ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

gcc + math.h + -lm problem

Oddelek: Programiranje
9967 (883) BigWhale
»

[Java] Kako filtrirati, katera števila lahko vpišeš?

Oddelek: Programiranje
182060 (1762) fiction
»

[Naloga] Eulerjevo število

Oddelek: Programiranje
233082 (2434) gani-med
»

kako definirtati prastevilo

Oddelek: Programiranje
143763 (3568) ooux
»

Pac sm butl !!!!!

Oddelek: Programiranje
71366 (1008) Phil

Več podobnih tem