modf und float*



  • hi,
    in c++ ist modf doch auch für float überladen.
    ich bekomm beim übersetzen hiervon:

    void my_preise::add(float preis){
        int wert=modf(preis, &preis)*100;
    ...
    

    folgenden fehler:

    Fehler: »float*« kann nicht nach »double*« für Argument »2« nach »double modf(double, double*)« umgewandelt werden
    

    das hier:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
        float bla=3.5;
        int wert=modf(bla, &bla)*100;
        cout << wert << endl;
        return 0;
    }
    

    geht problemlos.

    Was mach ich falsch??

    mfg
    Ghill



  • ich weiß net was du machst, bei mir geht es ohne probleme, das heißt du übergibst was dummes an die funktion



  • void my_preise::add(float preis){
        int wert=std::modf(preis, &preis)*100;
    ...
    

    jetzt gehts 👍

    mfg
    ghill



  • hi,

    gibt es eine genauere alternative zu modf, da modf bei bestimmten zahlen ungenaue/falsche werte zurückgibt.

    Beispiel:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main(){
        double bla;
        int a=modf(3.34, &bla)*100, b=modf(1.99, &bla)*100, c=modf(1.98, &bla)*100, d=modf(7.98, &bla)*100;
        cout << a << " " << b << " " << c << " " << d << endl;
    }
    

    Ausgabe:

    33 98 97 98
    

    vorallem die letzten beiden zahlen verwundern mich, da ja nur die vorkommastelle eine andere ist.

    warum??

    mfg
    ghill


Anmelden zum Antworten