nur halbe zahlen oder ganze in c# annehmen?
Hallo ich muss einen Notenrechner programmieren und jetzt weiss ich nicht wie ich es machen kann, dass ich nur halbe zahlen oder ganze Zahlen annehme. Könnte mir wer tipps geben?
MFG
1 Antwort
Was sollen denn halbe Zahlen sein? Es darf nur halbe Zahlen oder ganze haben. Ganze Zahlen sind sowas wie 1 2 3, aber halbe Zahlen? Die wären dann Kommazahlen oder wie? 1,3 2,4 ? Aber wenn nur die gehen, wo ist das Problem? Andere Zahlen als Komma oder nicht Kommazahlen gibt es doch nicht
Ich würde da einfach ein Regex IsMatch benutzen:
Regex.IsMatch(zahl.ToString(), "^([0-9]+|[0-9]+(\.|,)5[0]*)$")
^Wir fangen von vorne an
$ Wir enden hinten
[0-9] Es darf nur eine Zahl sein
+ Es sollen mehr Zahlen vorkommen fürfen, nicht nur einer Stellen
| Oder
Dann das selbe nochmal
\.|, Ich wusste nicht, ob ToString ein Komma oder Punkt setzt, deshalb habe ich Punkt oder Komma eingebaut
5[0]* Entweder folgt nach dem Komma eine 5 oder eine 5 mit Null(en)
Das ist eine sehr einfache Möglichkeit das zu lösen. Ein Mathematischer weg direkt fällt mir gerade nicht ein.
Nachtrag: Alternativ zum Regex in Mathe direkt:
Ganzzahl prüfen:
bool istGanzzahl(double zahl)
{
if((zahl % (int)zahl) == 0)
{
return true;
}
return false;
}
bool istHalbezahl(double zahl)
{
if((zahl % (int)zahl) == 0.5)
{
return true;
}
return false;
}
Beide Varianten funktionieren: Regex und diese Mathematische. Such dir eine aus
Runde auf die nächste "halbe" Zahl.
falls zahl kleiner floor von zahl plus .25 zahl gleich floor von zahl
sonst falls zahl größer floor von zahl plus .75 zahl gleich floor von zahl plus 1
sonst zahl gleich floor von zahl plus .5
Oh, ich meinte zb nur 1.5 oder 2