double to int
-
Ich habe ein kleines Problem beim casten von double nach int.
Wenn ich eine double variable nach int mit static_cast casten will kommen bei mir nur zehnerpotenzen raus.bsp:
double x = pow(16.0,1); int y = static_cast<int>(x);wenn ich nun y ausgebe bekomme ich lediglich eine 10 statt einer 16 heraus.
entsprechend auch wenn ich die 16 hoch 2 nehme eine 100...
wenn ich x direkt ausgebe bekomme ich allerdings die erwartete 16.
-
Man kann mit einem static cast glaube ich keinen double in einen int konvertieren
dafür gibt es doch bestimmt irgendeine funktion wie atoi wenn man einen char in einen int konvertieren will?
Auch hier ist google dein Freund;)MfG cobra11freak
-
das problem ist, dass ich google als meinen freund angenommen habe und mein freund sagt, dass es damit funktionieren soll

-
cobra11freak schrieb:
Man kann mit einem static cast glaube ich keinen double in einen int konvertieren
dafür gibt es doch bestimmt irgendeine funktion wie atoi wenn man einen char in einen int konvertieren will?Woher bloss immer wieder diese seltsamen Annahmen kommen? Wie kommt man überhaupt auf so eine Idee?

Klappt wunderbar und gibt 16 aus:
#include <cmath> #include <iostream> int main() { double result = std::pow(16.0, 1); int y = static_cast<int>(result); std::cout << y << std::endl; return 0; }@goody,
Schon mal so ein kleines Programm probiert und angeschaut, ob es geht? Da vielleicht ein anderer Fehler im Gesamtprogramm vorliegt. Wenn auch so ein kleines Programm nicht geht, dann bitte Betriebsystem und Kompiler (+Version) angeben.Grüssli
-
versuch mal reinterpret cast...(2 sec mit google)
double d = 3.14; int i; i = reinterpret_cast<int>(d);
-
cobra11freak schrieb:
versuch mal reinterpret cast...(2 sec mit google)
double d = 3.14; int i; i = reinterpret_cast<int>(d);Um Himmelswillen ... informier dich zuerst mal oder probier es zumindest aus, bevor du da wild herumratest. Das endet in einem simplen Kompilerfehler.
Grüssli
-
Dravere schrieb:
cobra11freak schrieb:
Man kann mit einem static cast glaube ich keinen double in einen int konvertieren
dafür gibt es doch bestimmt irgendeine funktion wie atoi wenn man einen char in einen int konvertieren will?Woher bloss immer wieder diese seltsamen Annahmen kommen? Wie kommt man überhaupt auf so eine Idee?

Ich komme darauf weil ich dachte das double und int andere Speichertypen sind. Scheint ja aber zu gehen;)
-
cobra11freak schrieb:
versuch mal reinterpret cast...(2 sec mit google)
double d = 3.14; int i; i = reinterpret_cast<int>(d);
-
-
cobra11freak schrieb:
versuch mal reinterpret cast...(2 sec mit google)
Na dann gute Nacht

Vielleicht solltest du dich mehr als nur 2 Sekunden mit Google-Suchen beschäftigen...
-
beschwert euch bei chip daher hab ich das:
http://forum.chip.de/c-c/double-int-konvertieren-504735.htmlsry *schäm* (halt die fresse)
-
cobra11freak schrieb:
beschwert euch bei chip daher hab ich das:
http://forum.chip.de/c-c/double-int-konvertieren-504735.htmlROFL ... beste Komödie ever! Da steht sogar im Thread, dass es nicht geht.

Aber vielleicht würde es nicht schaden, wenn du nochmals die C++ Casts in deinem Lehrbuch durchlesen würdest. Ich will ja nicht fragen, was du mit dem "unterschiedliche Speichertypen" gemeint hast

Grüssli
-
Hmm das ist ja jetzt super peinlich. Hätt ich mich da doch bloß rausgehalten...
Ok ich muss ehrlich zugeben das ich noch niemals mit reinterpret , dynamic , static casts gecastet hab. Wenn ich caste dann so:funktion((*int) hallo);Fürs lesen bin ich viel zu ungeduldig :p
Außerdem bin ich zu müde das mit den Speichertypen zu erklären
Im schlechtem Gewissen einschafend
cobra11freak
-
also bei der ganzen sache geht es um die berechnung der dezimal-zahl aus einer hex zahl.
ich habe sämtliche ziffern der hex zahl in einem int-array vorliegen. jetzt müssen die einzelnen ziffern ja nur noch mit der entsprechenden 16er potenz multipliziert werden.
wenn ich das ergebnis als double ausgebe passt auch alles. lediglich wenn ich es in einen int konvertieren möchte klappts nicht mehr.ich hab es in einem anderen kleinen programm ausprobiert und hier passt alles perfekt.
auf meinen pc läuft XP und ich programmiere auf Visual Studio 2010
was kann ich falsch eingestellt haben oder verändert haben, dass er mir in meinem projekt nur 10er potenzen zurückgibt wenn ich einen double konvertiere?
-
cobra11freak schrieb:
Hmm das ist ja jetzt super peinlich. Hätt ich mich da doch bloß rausgehalten...
Ok ich muss ehrlich zugeben das ich noch niemals mit reinterpret , dynamic , static casts gecastet hab. Wenn ich caste dann so:funktion((*int) hallo);Fürs lesen bin ich viel zu ungeduldig :p
Außerdem bin ich zu müde das mit den Speichertypen zu erklären
Im schlechtem Gewissen einschafend
cobra11freakDu solltest auch ein schlechtes Gewissen haben, dafür das du C-Casts benutzt.
-
cobra11freak schrieb:
Wenn ich caste dann so:
funktion((*int) hallo);Tut mir echt leid, aber sogar das ist falsch.

goody schrieb:
was kann ich falsch eingestellt haben oder verändert haben, dass er mir in meinem projekt nur 10er potenzen zurückgibt wenn ich einen double konvertiere?
Hast du krümelkackers Antwort gesehen?
-
ja hab ich gelesen
aber ich hab bei der ausgabe nicht versehentlich ein "<< hex" mit rein geschrieben
die ganzen zahlen kommen alle aus einer hex zahl, die habe ich aber schon soweit aufgelöst, dass ich nun jede einzelne ziffer in einem int habe.
wenn ich diese ausgebe, stehen auch exakt die richtigen werte in der ausgabe.
nun versuche ich ja nur mit diesen int werten weiter zu rechnen.
das double kommt lediglich von der funktion "pow".
-
Gut, gibt nur noch eins. Zeige ein Minimalbeispiel, welches den Fehler reproduziert.
Grüssli
-
Gib dem double doch mal den Wert 10 und schau mal, was dann für eine Ausgabe kommt. Zufällig 'A'?
-
wenn ich in ein double eine 10 packe kommt eine 10 wenn ich sie als int ausgebe.
leider passiert das selbe auch wenn ich dort eine 16 reinpacke
-
goody schrieb:
wenn ich in ein double eine 10 packe kommt eine 10 wenn ich sie als int ausgebe.
leider passiert das selbe auch wenn ich dort eine 16 reinpackeIch sage einfach mal: Glaube ich nicht.