TheDesertEagle Posted June 18, 2011 Report Share Posted June 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 to comment Share on other sites More sharing options...
nozyck Posted June 18, 2011 Report Share Posted June 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 to comment Share on other sites More sharing options...
TheDesertEagle Posted June 18, 2011 Author Report Share Posted June 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 to comment Share on other sites More sharing options...
nozyck Posted June 18, 2011 Report Share Posted June 18, 2011 Wynik może być dobry, funkcja nie jest problemem. Zwróć uwagę na sposób wyświetlania wyników. Link to comment Share on other sites More sharing options...
gus Posted June 20, 2011 Report Share Posted June 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 to comment Share on other sites More sharing options...
TheDesertEagle Posted June 20, 2011 Author Report Share Posted June 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 to comment Share on other sites More sharing options...