Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Double in 2 int werte

Empfohlene Antworten

Veröffentlicht

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.

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?

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

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]

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

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]

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);

ahh jetzt funzt es

danke nochmal für die hilfe

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.