dragonn
(dragonn)
#1
Jestem początkującym programistą i zrobiłem sobie taki program
#include
#include
void main()
{
float nNETTO;
std::cout << "Podaj wartość netto: ";
std::cin >> nNETTO
;const float PODATEK = 0.22;
int nWYNIK = nNETTO * PODATEK;
;std::cout << nNETTO << " * " << PODATEK << " = " << nWYNIK;
;_getch();
}
I wychodzi mi takie coś:
Coś czytałem że takie błędy mogą być ale dlaczego tak się dzieje(szukałem na google ale nic nie znalazłem albo źle szukałem) :?:
matiit
(matiit)
#2
int nWYNIK = nNETTO * PODATEK;
Przecież wynik też będzie liczbą dziesiętną.
#include
using namespace std;
int main()
{
float nWYNIK;
float PODATEK = 0.22;
float nNETTO;
cout << "Podaj wartość netto: ";
cin >> nNETTO;
nWYNIK = nNETTO * PODATEK;
cout << nNETTO << " * " << PODATEK << " = " << nWYNIK;
}
(Desktop)./a.out
Podaj wartość netto: 100
100 * 0.22 = 22
(Desktop)./a.out
Podaj wartość netto: 250
250 * 0.22 = 55
nr47
(Sawyer47)
#3
Float jest małej precyzji, dodatkowo przypisujesz do typu int i następuje utrata dokładności.
float a = 100.0f;
float b = 0.22f;
std::cout << "a * b = " << a * b << '\n'; // 22
std::cout << "(int)(a * b) = " << (int)(a * b) << '\n'; // 21
dragonn
(dragonn)
#4
A już rozumiem zamiast int nWYNIK miałem dać float nWYNIK już jest dodrze, dzięki .
Co znaczy że float jest małej dokładności :?: