vorkomma und nachkommastellen in c# trennen?

3 Antworten

Gibt viele Möglichkeiten

Wert mit Floor abrunden und in int konvertieren. Das sind die Euro

Den abgerundeten Wert vom ursprünglichen abziehen und dann * 100. In int konvertieren. Das sind die Cent

Isendrak  14.11.2019, 20:22

Floor wäre in dem Fall nicht nur redundant (ein Typecast nach int reicht aus), sondern würde im "schlimmsten" Fall auch noch zu fehlerhaften Werten führen.

Solange der Wert größer als oder gleich 0 (bzw. 0,00) ist geht noch alles klar.

ABER: Floor macht z.B. aus -1,5 den Wert -2, obwohl vor dem Komma nur -1 steht. Ein Typecast nach int liefert dagegen den korrekten Wert -1.

2
int NachkommaStellen = 2;
double Betrag = 12.34;
int VorkommaAnteil = (int)Betrag;
int NachkommaAnteil = (int)((Betrag-VorkommaAnteil)*Math.Pow(10, NachkommaStellen));

Den Rest drumherum musst aber noch selber machen. ^^

Isendrak  14.11.2019, 20:27

Nachtrag: Wenn auch negative Werte behandelt werden sollen, dann eher so:

int NachkommaStellen = 2;
double Betrag = -12.34;

int Vorzeichen = Betrag < 0 ? -1 : 1;
Betrag = Math.Abs(Betrag);
int VorkommaAnteil = (int)Betrag * Vorzeichen;
int NachkommaAnteil = (int)((Betrag-VorkommaAnteil)*Math.Pow(10, NachkommaStellen)) * Vorzeichen;

Damit wäre -12,34 aufgeteilt in

  • VorkommaAnteil = -12
  • NachkommaAnteil = -34

Wobei du je nach Anwendungsfall das Vorzeichen auch vollständig getrentt von den beiden Teilwerten behandeln oder auch einfach komplett ignorieren/entfernen könntest.

0

GanzeEuro = int Eingabe;

Cent = (Eingabe - GanzeEuro) * 100;

Und dann halt die Ausgabe

@gfntom: Wenn jemand bei dieser Aufgabe Hilfe benötigt, wird derjenige wohl kaum floor anwenden

Woher ich das weiß:Studium / Ausbildung