33 lines
1.3 KiB
Markdown
33 lines
1.3 KiB
Markdown
# Ispis realnih brojeva
|
|
|
|
Kako postići zaokruživanje na 2 decimale? U jeziku C++ pravilan način da se to postigne je korišćenjem funkcije `setprecision` iz biblioteke `<iomanip>`. Kod ispod ispisuje broj **π** (pi) zaokružen na 2 decimale:
|
|
```c++
|
|
#include <iostream>
|
|
#include <iomanip>
|
|
using namespace std;
|
|
|
|
int main() {
|
|
double pi = 3.14159265;
|
|
cout << fixed << setprecision(2) << pi << endl; // ispisuje 3.14!
|
|
return 0;
|
|
}
|
|
```
|
|
|
|
## Lekcija o snalažljivosti
|
|
|
|
Šta činiti ako smo zaboravili na `setprecision`? Najbitnija veština takmičara (ali i dobrog programera) je da ume da se *snađe ✨*.
|
|
|
|
Jedan način koji znamo na koji možemo da odbacimo decimale iza zareza je konverzija (pretvaranje) realnog broja u ceo broj, a to mozemo postići čuvanjem realnog broja u celobrojnu promenljivu, na primer ovako:
|
|
```c++
|
|
int ceo_deo = pi; // ovo će biti 3
|
|
```
|
|
Ali kako da izvučemo bas `3.14`? Množenjem broja `3.14159265` sa `100` dobijamo `314.159265` gde ponovo na istu foru umemo da izbacimo deo iza zareza:
|
|
```c++
|
|
int pomocna_prom = pi * 100; // ovo će biti 314
|
|
```
|
|
Deljenjem ovog broja sa `100.0` dobijamo to što želimo 🙂
|
|
```c++
|
|
double rezultat = pomocna_prom / 100.0; // ... 3.14
|
|
```
|
|
Pazite na to da smo ovde morali da delimo baš sa `100.0` a ne sa `100` jer na ovaj način kažemo C++-u da treba deljenje da tretira kao realno, a ne celobrojno.
|