• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zaokrąglanie liczb c++

Object Storage Arubacloud
0 głosów
912 wizyt
pytanie zadane 2 października 2019 w C i C++ przez Ezzadanko5head Nowicjusz (180 p.)

Witam! Mam taki problem: mam napisać program wyliczający bardzo dużą ilość liczb rzeczywistych pomiędzy dwiema liczbami rzeczywistymi ( Zbiór liczb rzeczywistych jest gęsty więc jest ich nieskończoność). Używam zmiennych long double więc powinno mi wypisywać 19-20 cyfr po przecinku ale po 5 cyfrach zaczyna mi zaokrąglać. Dowiedziałam się że muszę ustawić zaokrąglanie liczb w kodzie ale nigdzie nie mogę znaleźć jak to zrobić. Z góry dziękuje za wszystkie odpowiedzi.

#include <iostream>

using namespace std;

long double mniejsza;
long double wieksza;

int main()
{
    cout << "Podaj mniejsza z dwoch liczb rzeczywistych: " << endl;
    cin>>mniejsza;
    cout<<"Podaj wieksza z dwoch liczb rzeczywistych: "<<endl;
    cin>>wieksza;
 for(int i=1; i<=100000; i++)
{
    mniejsza = (mniejsza+wieksza)/2;
    cout<<mniejsza<<endl;
}

    return 0;

}

Po odpaleniu dzieje się coś takiego:

Podaj mniejsza z dwoch liczb rzeczywistych:
1
Podaj wieksza z dwoch liczb rzeczywistych:
2
1.5
1.75
1.875
1.9375
1.96875
1.98438
1.99219
1.99609
1.99805
1.99902
1.99951
1.99976
1.99988
1.99994
1.99997
1.99998
1.99999
2
2
2
2
2
2
2
2
2

 

I już do końca lecą dwójki.

 

2 odpowiedzi

+1 głos
odpowiedź 2 października 2019 przez tkz Nałogowiec (42,000 p.)

Przekleństwo liczb zmiennoprzecinkowych...

Głównie rozchodzi się o precyzję, a dokładnie o jej brak co jest bardzo powszechne wśród liczb po przecinku. Mantysa long doubla to 16 bitów, które musisz ustawić.  https://stackoverflow.com/questions/22515592/how-to-use-setprecision-in-cimage

 

komentarz 2 października 2019 przez Ezzadanko5head Nowicjusz (180 p.)
A jest może jakiś sposób na uzyskanie jeszcze wiekszej precyzji niż przy long double?
komentarz 2 października 2019 przez tkz Nałogowiec (42,000 p.)
Pewnie przez zewnętrzne biblioteki.
komentarz 2 października 2019 przez tkz Nałogowiec (42,000 p.)
0 głosów
odpowiedź 2 października 2019 przez Munvik Dyskutant (9,350 p.)
Spróbuj (mniejsza+wieksza)/2.f;
komentarz 2 października 2019 przez niezalogowany
edycja 2 października 2019

tu na forum był temat o stringach dla dużych liczb .

https://eduinf.waw.pl/inf/utils/001_2008/0119.php

cyfr znaczących - nie po przecinku (przed i po przecinku w sumie).

edit :: long double 19 cyferek poprawnych reszta to wymysł komputera(ale u mnie na kompie jak policzyłem to było tylko 16, dla long double)

Podobne pytania

0 głosów
0 odpowiedzi 620 wizyt
pytanie zadane 16 lutego 2021 w C i C++ przez Ashiro Nowicjusz (210 p.)
0 głosów
1 odpowiedź 662 wizyt
pytanie zadane 21 kwietnia 2019 w C i C++ przez Ebay_05 Początkujący (400 p.)
0 głosów
1 odpowiedź 340 wizyt
pytanie zadane 23 września 2020 w PHP przez Kacperhehe Bywalec (2,930 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...