Problem z liczbami po przecinku w programie:
Ostatnio zmodyfikowano 2014-09-06 13:33
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: #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?! |
|
Parapet |
» 2014-09-06 08:19:15 Zmień wszystkie typy float->int ;p |
|
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?! |
#include <iomanip> std::cout << std::setprecision( 2 );
|
|
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. |
|
Monika90 |
» 2014-09-06 13:33:09 Zamiast zapisywać liczbę złotych we float, zapisuj liczbę groszy w int |
|
« 1 » |