Dokładność wyniku w procentach, ćwiczenie.

0

Witajcie, otóż mam zadanie:
"Napisz program, który prosi użytkownika o wpisanie bieżącej liczebności populacji świata i bieżącej liczebności populacji Polski(Albo innego wybranego kraju) i zapisze otrzymane dane w zmiennych typu long long. Potem program powinien obliczyć i wypisać procent, jaki populacja Polski stanowi w populacji świata. Przebieg wykonania programu powinien wyglądać mniej więcej tak:

Podaj liczbę ludności świata: 6898758899
Podaj liczbę ludności Polski: 38482919
Populacja Polski stanowi 0,55782% populacji świata."

Stephen Prata, "Szkoła programowania".

Mój kod:

#include <iostream>
using namespace std;

int main()
{

 float ludnosc_swiata = 6898758899;
 float ludnosc_polski = 38482919;

 float wszystko = ludnosc_swiata + ludnosc_polski;
 float  wszystko1 = ludnosc_polski / wszystko;
 float  wszystko2 = wszystko1 * 100;

cout << wszystko2;
    
    return 0;
} 

I PYTANIA:
IDEE na chwile obecną pokazuje mi: 0.554729. Czyli pokazuje 6 liczb po przecinku, a wynik na przykładzie ma ich 5. Jak mam ustawić wynik aby mi też pokazywał 5 znaków. Sprawdzałem w innych kalkulatorach i tam pokazuje dokładniej. Czy to moja wina? Czy po prostu kompilator może być ustawiony na bardziej precyzyjną liczbę?

3

Używasz float zamiast double lub long double, więc na początku sam pozbawiasz się precyzji.

Co do samej precyzji wyświetlania:
#include <iomanip>
cout << setprecision(5) << fixed << wszystko2;

0

Witaj, dziękuje za bardzo szybką odpowiedź. Właściwie źle skonstruowałem moje działanie, ponieważ powinno ono wyglądać tak:

#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
 
 long double ludnosc_swiata = 6898758899;
 long double ludnosc_polski = 38482919;
 
 long double  wszystko = ludnosc_polski/ludnosc_swiata;
 long double wszystko2 = wszystko * 100;
 
cout << setprecision(5) << fixed << wszystko2;
 
    return 0;
} 

Mankament znajdował się w samej arytmetyce. A ja na początku podejrzewałem, że suma się zaokrągli do tej właściwej jak usunę jedno miejsce po przecinku. Jednak tak się nie stało i dzięki <iomanip> usunąłem szóstą liczbę nic więcej nie zmieniając.
Twój post nie idzie na marne ponieważ poznałem nową komendę i wiem że muszę się przyjrzeć bardziej zmiennoprzecinkowym.

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