Rzutowanie typów
Ostatnio zmodyfikowano 2017-02-15 22:05
milmega Temat założony przez niniejszego użytkownika |
Rzutowanie typów » 2017-02-15 17:58:04 Zaimplementuj funkcje int Floor(double value) która zaokrągla liczby w dół do najbliższej całości np. Z liczby π ≈ 3.141592.. zwróci liczbe 3. Dla liczby 99.999999 .. zwróci liczbę 99. Ale dla ujemnej liczby np. -149.99 zwróci liczbę -150 int Floor( double value ) { }
|
|
jankowalski25 |
» 2017-02-15 18:10:28 Z liczby π ≈ 3.141592.. zwróci liczbe 3. Dla liczby 99.999999 .. zwróci liczbę 99. |
W najprostszych przypadkach wystarczy zwykłe rzutowanie. Ale dla ujemnej liczby np. -149.99 zwróci liczbę -150 |
Przy liczbach ujemnych wystarczy nieznacznie zmodyfikować wynik rzutowania. Czy musisz obsługiwać przypadki szczególne (na przykład NaN )? |
|
milmega Temat założony przez niniejszego użytkownika |
» 2017-02-15 18:42:14 Muszę obsługiwać poszczególne przypadki. Przy minusowych wystarczy, że odejmę 1, ale nie wiem jak to zrobić, żeby działało i na minusowe i na dodatnie. int Floor( double value ) { value =( int ) value; return value; value -= 1; value =( int ) value; return value; }
|
|
karambaHZP |
» 2017-02-15 18:45:56 |
|
jankowalski25 |
» 2017-02-15 19:01:50 Dodaj jeszcze static_cast , aby rzutowanie było lepiej widoczne (w wielu przypadkach nieprawidłowe rzutowanie jest przyczyną różnych problemów). Dopisano:value -= 1; value =( int ) value; return value; |
To nie powinno tak działać. Uwzględnij jeszcze przypadki, gdy część ułamkowa jest zerem. |
|
milmega Temat założony przez niniejszego użytkownika |
» 2017-02-15 19:39:51 Wszystko działa w testach oprócz jednego. Nie działa dla liczby -5.000000 (double) int Floor( double value ) { if( value > 0 ) { value =( int ) value; return value; } else if( value < 0 ) { value -= 1; value =( int ) value; return value; } return value; }
|
|
czaffik |
» 2017-02-15 22:05:39 Nie działa dla liczby -5.00000... gdyż: patrz post użytkownika jankowalski25. Musisz sprawdzić czy część ułamkowa w przypadku liczb ujemnych jest równa zero, jeśli tak to nie dodajesz -1, jeśli nie to dodajesz -1. |
|
« 1 » |