Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hallo ich bin noch Anfänger in C++^^

ich würde gern wissen wie ich einen double wert in 2 int werte speichere

z.b.

double betrag = 5.30;

jetzt würd ich gern die 5 in eine int variable namens "euro" und die 30 in eine int variable "cent" speichern!

könnt ihr mir sagen wie das geht?

danke im vorraus.

Geschrieben

Bei Geldbeträgen ist es nicht empfehlenswert, sie überhaupt in Fließkommatypen wie double zu speichern. 5.3 passt auch gar nicht genau in eine double-Variable hinein.

Du könntest den Betrag z.B. in Cent in einer Ganzzahlvariablen speichern.

Hast du darauf Einfluss?

Geschrieben

Es ist so das ich eine Klasse Geld habe

die 2 attribute besitzt (int euro, cent;)

dan habe ich 3 konstruktoren

ausschnitt aus der main

Geld a (17, 10); // 17 Euro 10 Cent;

Geld b (3.5); // 3 Euro 50 Cent

Geld c; // standardmäßig 0 Euro 0 Cent

so lautet es in der aufgabenstellung

da beim zweiten konstruktor ein double wert übergeben wird

muss doch dieser jetzt aufgeteilt werden auf die int werte (euro und cent) oder nicht?

ich glaube schon das wir nur diese beiden attribute haben

Geschrieben
Es ist so das ich eine Klasse Geld habe

die 2 attribute besitzt (int euro, cent;)

Das ist gut.

da beim zweiten konstruktor ein double wert übergeben wird

muss doch dieser jetzt aufgeteilt werden auf die int werte (euro und cent) oder nicht?

Doch, das heißt es.

Den ganzzahligen Teil kannst du einfach durch die automatische Typumwandlung ermitteln:

euro = int(wert)
Beim Centwert ist das etwas komplizierter. Der übliche Weg ist, den Wert mit 100 zu multiplizieren (damit bekommt man den Wert in Cent) und dann mit dem Modulooperator den Rest der Division durch 100 zu ermitteln. Um Fehler durch die "eingebaute" Ungenauigkeit von double zu vermeiden, musst du den Wert aber vorher runden. In welche Richtung, hängt aber vom Vorzeichen des Werts ab:
if( wert > 0 )
{
cent = int(wert * 100 + .5) % 100;
}
else
{
cent = int(wert * 100 - .5) % 100;
}[/code]

Geschrieben

Danke für den tipp

ich hätt noch ne frage:D

noch ein ausschnitt aus der main

Geld Summe = a + b + c;
wie soll den die operator+ methode ausschaun? bei mir sieht es so aus
Geld Geld::operator +(Geld betrag){


Geld neu;

neu.euro = euro + betrag.euro;

neu.cent = cent + betrag.cent;


return neu;


}

das stimmt aber nicht denn wenn ich diese methode nochmal aufrufe

wird mit den alten werten weiter gerechnet

der operator+= ist dafür einfach^^

ich weiss ich hab noch kaum erfahrung in der OOP

Geschrieben
Geld Geld::operator +(Geld betrag)

Der operator+ sollte kein Member sein, damit automatische Typumwandlungen auch mit dem linken Operanden möglich sind.

Sonst geht zwar:

Geld a;
Geld b = a + 1.0;[/code] Aber das ginge nicht:
[code]Geld a;
Geld b = 1.0 + a;
Wenn du schon einen operator+= hast, kannst du den operator+ ganz einfach schreiben:
Geld operator+(const Geld& lhs, const Geld& rhs)
{
Geld temp(lhs);
temp += rhs;
return temp;
}[/code]

Geschrieben

ich weiss nicht was ich falsch gemacht hab

aber er schreibt

Binaerer Operator '+' hat zu viele Parameter

Hab den prototypen auch so angepasst

Geld operator+(const Geld& lhs, const Geld& rhs);

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...