Warum?



  • c:\Entwicklung\Steuerprogramm\Funktionen.h(163) : warning C4244: 'Initialisierung': Konvertierung von 'int' in 'float', möglicher Datenverlust

    Das ist zwar nur eine Warnung, aber warum sollen Daten verloren gehen, wenn ich von int nach float konvertiere? float -> int würde ich ja noch verstehen.



  • Die Konvertierung eines Ganzzahltyps in einen Gleitpunkttyp, der die gleiche Anzahl an Bits verwendet, kann zu einem Datenverlust führen, wird aber trotzdem automatisch durchgeführt.
    Die Konvertierung eines Ganzzahltyps in einen Gleitpunkttyp mit mehr Bits wird zu keinem Datenverlust führen und wird automatisch durchgeführt.

    Der Compiler geht warscheinlich nur davon aus das es verschiedene Datentypen sind!

    mfg hohesC



  • Hallo

    int test1 = std::numeric_limits<int>::max();
    std::cout << test1 << std::endl;
    
    float test2 = test1;
    std::cout.precision(10);
    std::cout << test2 << std::endl;
    

    Auf meinem Rechner habe ich folgende Ausgabe:
    2147483647
    2147483648

    Die Genauigkeit von float reicht wohl nicht aus, um den kompletten Zahlenbereich von int darzustellen.

    MFG
    MacMike


Anmelden zum Antworten