TheDesertEagle Napisano Czerwiec 18, 2011 Zgłoś Share Napisano Czerwiec 18, 2011 Kiedy wprowadzam zmienne jakiegoś typu (float/double) do obiektu (podstawiam pod zmienne tego samego typu w obiekcie) i wywołuję metodę w nim zawartą która coś odejmuje zwraca mi takie coś do main'a jako wynik odejmowania: 4.17768e-315. Druga metoda w obiekcie która wykonuje wyłącznie operacje na dodawaniu zwraca wyniki poprawnie. Co może być tego przyczyną? Link do komentarza Udostępnij na innych stronach More sharing options...
nozyck Napisano Czerwiec 18, 2011 Zgłoś Share Napisano Czerwiec 18, 2011 http://www.cplusplus.com/reference/clibrary/cstdio/printf/ - "%e" - http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa Odejmować można różne liczby, wynik można różnie zapisywać. Coś tam odejmujesz i nie jest tak, jak tego oczekujesz -> gdzieś coś masz źle, albo nie wiesz, że jest dobrze. Link do komentarza Udostępnij na innych stronach More sharing options...
TheDesertEagle Napisano Czerwiec 18, 2011 Autor Zgłoś Share Napisano Czerwiec 18, 2011 [CIACH] Nie do końca rozumiem...... Oto definicja przykładowej metody z klasy d która zwraca mi te błędne wyniki: double d::Odejmij(double b1,double b2) {double t=b1-b2; return t;} Nie cytujemy poprzedzającego posta w całości.-org Link do komentarza Udostępnij na innych stronach More sharing options...
nozyck Napisano Czerwiec 18, 2011 Zgłoś Share Napisano Czerwiec 18, 2011 Wynik może być dobry, funkcja nie jest problemem. Zwróć uwagę na sposób wyświetlania wyników. Link do komentarza Udostępnij na innych stronach More sharing options...
gus Napisano Czerwiec 20, 2011 Zgłoś Share Napisano Czerwiec 20, 2011 Ja rozumiem ten problem tak, że kolego TheDesertEagle nie wie co to jest postać wykładnicza. Jeżeli wyświetlasz wynik za pomocą printf to zamiast %e, podaj %f i liczba zostanie wyświetlona w bardziej czytelnym dla człowieka formacie. Link do komentarza Udostępnij na innych stronach More sharing options...
TheDesertEagle Napisano Czerwiec 20, 2011 Autor Zgłoś Share Napisano Czerwiec 20, 2011 Z tego co mi wiadomo do wyświetlania w C++ służy cout, o tym printf nie słyszałem. Nie mam pojęcia jaki robiłem błąd ale udało mi się go rozwiązać, napisałem program od początku, i metoda ,,Odejmij" zaczęła mi działać poprawnie. W każdym razie za pomoc dziękuję. Poniżej podaję kod może się przyda komuś kto uczy się pisania klas : ////////////////////////////////////////////////////////// #include<iostream> #pragma hdrstop using namespace std; class tx {private: double a1; double a2; public: tx::tx(); tx::tx(double b1,double b2); double Dodaj(double b1,double b2); double Odejmij(double b1,double b2); }; int main() { double c1; double c2; cin>>c1; cin>>c2; tx d1; double g; g=d1.Odejmij(c1,c2); cout<<"Z funkcji odejmij: "<<g<<endl; system("pause"); return 0; } tx::tx() {a1=0; a2=0;} tx::tx(double b1,double b2) {a1=b1; a2=b2;} double tx::Dodaj(double b1,double b2) {a1=b1; a2=b2; return a1+a2;} double tx::Odejmij(double b1,double b2) {a1=b1; a2=b2; return a1-a2;} ///////////////////////////////////////////////////////// Link do komentarza Udostępnij na innych stronach More sharing options...