zakres float

PJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

Potrzebuje jakoś określić precyzje typu float, bo zamiast normalnego wyniku wyświetla się zapis w notacji naukowej.

Mój program wykonuje takie obliczenia, dla przykładu, obliczyłem to sam: '2 * 1024* 1024' = 2097152, a następnie wyświetla tą liczbę, tylko w tym przypadku program źle wyświetla liczbę(bo ta jest raczej największa) bez mnożenia przez 2 czyli przy wyniku 1048576, również wyświetlana jest notacja naukowa.

Sprawdzałem i float może mieć wartość ponad 105 ale na pewno nie więcej niż 106.

Kopiuj
 
case bajty:			return m_fRozmiarB;

zmienna m_fRozmiarB, przyjmuje zbyt dużą wartość, próbowałem ją rzutować na int:

Kopiuj
 
case bajty:			return static_cast<int>(m_fRozmiarB);

ale wynik jest dalej taki sam, utworzyłem również zmienną typu int i przypisałem jej wartość zmiennej m_fRozmiarB, ale również nie pomogło.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

Zamias float używa się double. Jak chcesz mieć większą dokładność obliczeń całkowitoliczbowych to użyj long int lub long long int.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Problem jest nie we floatcie, tylko w tym jak go wyświetlasz. Jak go wyświetlasz?

PJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

plik main i funkcja main:

Kopiuj
         //pobieramy rozmiar
        float fRozmiar;
        cout << "Podaj rozmiar" << endl;
        cin >> fRozmiar;
 
        //deklarujemy obiekt kalkulatora i przekazujemy rozmiar
        CBajty Kalkulator;
        Kalkulator.UstawRozmiar(fRozmiar, static_cast<SCALE>(chSkala));
 
        // pokazujemy rozmiar we wszystkich skalach
        cout << endl;
        cout << "- bajty: "
                 << Kalkulator.PobierzRozmiar(bajty) << endl
             << "- kilobajty: "
                 << Kalkulator.PobierzRozmiar(kilobajty) << endl
                 << "- megabajty: "
                 << Kalkulator.PobierzRozmiar(megabajty) << endl;
 

Dodatkowy plik z funkcjami:

Kopiuj
void CBajty::UstawRozmiar(double fRozmiar, SCALE Skala)
{
        switch (Skala)
        {
        case bajty: m_fRozmiarB = fRozmiar; break;
        case kilobajty: m_fRozmiarB = fRozmiar * 1024; break;
        case megabajty: m_fRozmiarB = fRozmiar * (1024 * 1024); break;
        }
}
 
double CBajty::PobierzRozmiar(SCALE Skala)
{
        switch (Skala)
        {
                case bajty: return m_fRozmiarB;
                case kilobajty: return m_fRozmiarB / 1024;
                case megabajty: return m_fRozmiarB / (1024*1024);
                default: return 0;
        }
} 
 
PJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

to jak go mam wyświetlać?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.