x-kom hosting

Podstawy C++ problem

Vincent_Butch
utworzono
utworzono (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
komentarz

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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.