Vincent_Butch utworzono 28 października 2013 utworzono 28 października 2013 (edytowane) Witam. Potrzebuje pomocy ponieważ nie mam pojęcia dlaczego program tak sie zachowuje przy podstawowej operacji.... uczę się dopiero c++ . dla pewnych wartości działa poprawnie, dla innych nie. Zmiana z float na int (potrzebuje do randoma) i znowu do float nie działa poprawnie, np wartosc 2.3 zmienia się z 2.3 na 2.3 * 100 = 229 ????? i potem z int na float znowu 2.29.... gdzie ucieka to 0.01 ?? #include <string> #include <iostream> #include <conio.h> void main() { float a; std::cout<<"Podaj liczbę float: "; std::cin>> a; std::cout<<"podana liczba to: "<<a; int b; std::cout<<"\nZmiana na liczbę int"; b=a*100; std::cout<<"\nPo zmianie liczba ta jako integer wynosi: "<<b; float c; std::cout<<"\npowrot do float: "; c=float (b)/100; std::cout<<"\n liczba float znowu wynosi: "<<c; getch(); }
ppjanczakpawel komentarz 1 listopada 2013 komentarz 1 listopada 2013 Na starcie pamiętaj że c++ to bardzo silnie zdefiniowany język jeśli chodzi o arytmetykę. #include <iostream> using namespace std; int main() { float a ; cout << "Podaj float a :" << endl; cin >> a ; int b ; cout << "Podaj Int b : " << endl; cin >> b; b = a * 100 ; cout << "b = "<< a << " * " << 100 << " = " << b ; cout << endl; float c ; c = float(b) /100 ; // rzutujesz na typ Int -> float cout << "C = " << b << " / " << 100 << " = " << c ; return 0; } w c++ jest tak że jak mnożysz przez siebie 2 różne typy danych to język wymusza wynik w reprezentacji tej dłuższej jeśli chodzi o zapis na bitach, czyli int * float will create a float.Ale Ty wynik podstawiasz pod zmienną typu INT dlatego kompilator daje wynik 229 a nie 230 . Zauważ że gdybyś sprubował wyświetlić cout << 2.3 * 100 ; kompilator wyświetli 230 .Druga sprawa że rzutujesz int na float to ciut bez znaczenia bo liczba w int np 5 po takiej operacji to defakto 5.0, mam nadzieje że ciut pomogłem
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.