Rechnen mit Fließkommazahlen, float



  • Hallo
    ich habe ein paar Probleme bei der Mikroprozessorprogrammierung.

    wenn ich folgende Berechnung machen will

    #include "math.h"
    #include "float.h"
    .
    ..
    ...
    .....
    
    int uberlauf=0;
    float time=0;
    
    time=uberlauf*(1/84.375);
    

    da bekomm ich folgende Meldungen:

    Assembling main.src
    Linking to aktuell.out
    link51 W018: recursive call from 'MAIN_MAIN_PR' to 'CODE'
    link51 E001: unresolved external symbol '__FMULCO', module main.obj
    link51 E001: unresolved external symbol '__CIFL44', module main.obj
    link51 E001: unresolved external symbol '__STOREFREG', module main.obj
    link51 E002: reference made to unresolved external, symbol '__CIFL44', module main.obj
    link51 E002: reference made to unresolved external, symbol '__FMULCO', module main.obj
    link51 E002: reference made to unresolved external, symbol '__STOREFREG', module main.obj
    wmk: *** action exited with value 1.

    kennt jemand das problem???

    gruß



  • ^^irgendwo in den linker-einstellungen die float-unterstützung aktivieren.
    oder besser: überleg dir, ob dein programm auch ohne floats arbeiten kann. rechnungen mit floats sind super ungenau. und wenn's emuliert werden muss, ist es auch super langsam.
    🙂



  • ohne floats geht es nicht, da ich frequenzen und zeiten berechnen muss.
    linker einstellungen??? wie komm ich dahin? sicher das es daran liegt?



  • jaepen schrieb:

    linker einstellungen??? wie komm ich dahin?

    du musst die doku zu deinem compiler und build-tools usw. lesen. da steht das bestimmt drin.



  • sache1:

    wenn du sowas hast

    (1/84.375)
    

    und du weist dass es sich nicht ändern wird, nimm dirn taschenrechner und rechne es schon aus
    schreib dann lieber schon

    time = ueberlauf* 0,01185185185185185
    

    und da ueberlauf ja int ist würde ich noch nen cast dazwischenwerfen

    time = (float)ueberlauf* 0,01185185185185185f
    

Anmelden zum Antworten