Sprawdź, czy liczba jest całkowita
Ostatnio zmodyfikowano 2012-04-09 17:53
RazzorFlame |
» 2012-04-09 13:44:44 Kolego: double a = 0; double kopia_a = a; while( 1 ) { cout << "Podaj liczbe calkowita: "; cin >> a; kopia_a = a; a =( int ) a; if( a == kopia_a ) break; }
|
|
ptaq |
» 2012-04-09 14:03:24 czegos takiego jak a -( int ) to raczej nie ma, ja napisalem a -( int ) a i jest to poprostu odjecie od liczby a typu "float" tej samej liczby zrzutowanej na typ "int" czyli bez czesci po przecinku. |
|
pekfos |
» 2012-04-09 14:57:16 #include <cmath> bool calkowita( double a ) { return fmod( a, 1 ) == 0; } operator modulo (%) dziala tylko dla intów. |
|
ison |
» 2012-04-09 15:13:50 @pekfos co wypisze poniższy program? :) #include <cmath> #include <cstdio>
bool calkowita( double a ) { return fmod( a, 1 ) == 0; }
int main() { double a = 0.0; for( int i = 0; i < 10; ++i ) { a += 0.1; printf( "%.2lf\n", a ); } if( calkowita( a ) ) printf( "calkowita\n" ); else printf( "niecalkowita\n" ); }
|
|
pekfos |
» 2012-04-09 15:15:40 @ison: bool calkowita( double a, double p = 1e - 3 ) { return fmod( a, 1 ) < p || 1 - fmod( a, 1 ) < p; } :) |
|
Kameleon Temat założony przez niniejszego użytkownika |
» 2012-04-09 15:21:12 Dobra poskładam wasze wypowiedzi i dokończę moje Arcydzieło . Dziękuję . :) |
|
ison |
» 2012-04-09 17:01:34 @pekfos dobrze kombinujesz ale to jeszcze nie to ;) zobacz co zwróci calkowita(-2.4) |
|
pekfos |
» 2012-04-09 17:05:45 @ison: .. To dodaj sobie if( a < 0 ) a *=- 1; :P // bool calkowita( double a, double p = 1e - 3 ) { if( a < 0 ) a *=- 1; return fmod( a, 1 ) < p || 1 - fmod( a, 1 ) < p; } |
|
1 « 2 » 3 |