Typ zmiennej

0

Witam piszę w takiej sprawie, mam na zajęcia zrobić program liczący cenę brutto na netto, ale to jest nieważne, ponieważ program działa dobrze. Tylko mam jeden problem, kiedy podam większą kwotę brutto, to w wyniku końcowym, kwoty netto liczba nie jest taka ma być. Mam pytanie, jaki typ zmiennej mam ustawić, aby ta liczba była "normalna".

#include <iostream>
#include <math.h>

using namespace std;

int main ()
{
  long double netto, brutto, vat;

  cout << "Podaj stawke vat: ";
  cin >> vat;

  cout << "Podaj cene burtto: ";
  cin >> brutto;

  netto = brutto / ( 1 + 0.01*vat);

  netto *= 100;
  netto = ceil(netto);
  netto /= 100;

  cout << "Cena netto: " << netto << endl;

  return 0;
}

1.png

1

Co to znaczy, że liczba ma być "normalna"?

0
lion137 napisał(a):

Co to znaczy, że liczba ma być "normalna"?

Żeby liczba wyświetlała się w normalnej postaci a nie z literką "e"

1

To Użyj std::fixed

0
lion137 napisał(a):

To Użyj std::fixed

Teraz działa, ale nie zaokrągla mi do dwóch miejsc po przecinku

1

To Daj:
cout.precision(2);.

0
lion137 napisał(a):

To Daj:
cout.precision(2);.

Dziękuję, działa

1

FYI w prawdziwych aplikacjach związanych z pieniędzmi nie stosuje się liczb zmiennoprzecinkowych (jak float lub double) z powodu błędów zaokrągleń.
Używane są zwykle typ z bibliotek (zwykle nazywane Decimal), by mieć kontrolę na zaokrągleniami do konkretnych miejsc po przecinku.

2
MarekR22 napisał(a):

FYI w prawdziwych aplikacjach związanych z pieniędzmi nie stosuje się liczb zmiennoprzecinkowych (jak float lub double) z powodu błędów zaokrągleń.

Prawie się zgadza, wystarczy zamienić nie stosuje się na powinno się nie stosować :D

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