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