Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z liczbami po przecinku w programie:

Ostatnio zmodyfikowano 2014-09-06 13:33
Autor Wiadomość
Fiszcz
Temat założony przez niniejszego użytkownika
Problem z liczbami po przecinku w programie:
» 2014-09-06 03:29:46
Napisałem oto taki krótki programik:
C/C++
#include <iostream>

using namespace std;

void funkcja( float reszta, float nominaly[] )
{
    int n = 0;
    int b;
    cout << reszta;
    for(; reszta > 0; n++ )
    {
        b = int( reszta / nominaly[ n ] );
        reszta = reszta - float( b * nominaly[ n ] );
        if( b > 0 ) { cout << nominaly[ n ] << " * " << b << "   " << reszta << "\n"; }
    }
   
    cout << reszta;
}


int main()
{
    float nominaly[ 14 ] = { 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01 };
    float reszta = 53.99;
   
    funkcja( reszta, nominaly );
}

53.9950 * 1   3.99
2 * 1   1.99
1 * 1   0.990002
0.5 * 1   0.490002
0.2 * 2   0.0900017
0.05 * 1   0.0400017
0.02 * 2   1.67266e-006
nan
--------------------------------
Process exited with return value 0
Press any key to continue . . .

Jak się pozbyć tych okropnych dodatkowych miejsc po przecinku?!
P-116659
Parapet
» 2014-09-06 08:19:15
Zmień wszystkie typy
float->int
 ;p
P-116660
pekfos
» 2014-09-06 10:14:23
Zmień wszystkie typy
float->int
 ;p
A wtedy program nie będzie w ogóle działać ;)

Jak się pozbyć tych okropnych dodatkowych miejsc po przecinku?!
C/C++
#include <iomanip>
std::cout << std::setprecision( 2 );
P-116662
Fiszcz
Temat założony przez niniejszego użytkownika
To w cale błędu nie naprawia
» 2014-09-06 13:06:21
To w cale błędu nie naprawia.
Najlepiej będzie jak pokaże to na przykładzie:

Wywołujemy funkcje z resztą równą np. 37.64
to wtedy dzieją się takie okropne rzeczy:

37.6420 * 1   17.64
10 * 1   7.64
5 * 1   2.64
2 * 1   0.639999
0.5 * 1   0.139999
0.1 * 1   0.0399994
0.02 * 1   0.0199994
0.01 * 1   0.00999939
nan
--------------------------------
Process exited with return value 0
Press any key to continue . . .

Jak widać przez to wszystko znika nam jeden grosz.
P-116668
Monika90
» 2014-09-06 13:33:09
Zamiast zapisywać liczbę złotych we float, zapisuj liczbę groszy w int
P-116671
« 1 »
  Strona 1 z 1