wypisywanie liczb z pewna dokładnościa

0

Witam, chciałabym za pomocą cout wypisać liczby rzeczywiste z pewną dokładnością po przecinku ( np 4) ale tak by nie wypisywało mi nieznaczących zer. Może ktoś wie jak sie do tego zabrać?

0
cout.precision(x)
cout << zmienna_double;

za x wstaw to co chcesz, tylko to nie tylko miejsca po przecinku uwzględnia, ale też te przed przecinkiem

0

hmm no wiem że można w ten sposób... tylko że ja chce aby zawsze było x liczb po przecinku, bez względu na ilość cyfr w części całkowitej liczby i aby nie wypisywało mi nieznaczacych zer, wiec może masz jakiś inny pomysł?

0

albo użyj printf'a:

  double pi = 3.14159265;
  printf ("liczba pi jest równa %.4f\n", pi);

spowoduje to wypisanie na ekranie:
liczba pi jest równa 3.1415

więcej o printfie znajdziesz tutaj

0

Ale to nie wyświetla nieznaczących zer, przed chwilą sprawdzałem na wszelki wypadek.

@ceer:
nieznaczące zera u ciebie wypisze

0

zatem powiem tak:
korzystajac tylko z cout.precision(x) nie wypisze mi nieznaczacych zer, ale nie mam 100% pewnosci ile wypisze mi liczb po przecinku
natomiast jesli włacze flage
cout.setf(ios::fixed);
cout.precision(x);
to wypisze mi konkretnie x liczb po przecinku, ale również wypisze nieznaczące zera.
I chciałabym jednak skorzystać z cout a nie z printf'a.
Zatem może są jeszcze inne sugestie?

0

taki mały ot: wiesz, że te zera z tyłu to najczęściej przypadek? tylko malutki ułamek liczb rzeczywistych w skończonym binarnym rozwinięciu będzie się kończyć zerami po przeliczeniu do systemu dziesiętnego. oznacza to, że zwykle będziesz i tak wyświetlać cały śmietnik po przecinku.
jak to zrobić? chociażby sprintf + obcięcie wszystkich zer z końca zwróconego łańcucha.

0

Chyba muszę sie pogodzić z tymi printfami ;-P

0

nie :) mozna na strumieniach i stringach, cos a'la:

string format(double liczba, size_t decimals)
{   ostrstream tempstr;
    tempstr << fixed << precision(decimals) << liczba;
    string str = tempstr.str();
    str.erase( str.rbegin(), find_if(str.rbegin(), str.rend(), not_eq('0')) );
    return str;
}

cout << format(12.34, 4) << endl;

disclaimer: niekompilowane

1 użytkowników online, w tym zalogowanych: 0, gości: 1