nur halbe zahlen oder ganze in c# annehmen?

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

bocokwk 
Fragesteller
 23.10.2021, 18:01

Oh, ich meinte zb nur 1.5 oder 2

0
FaTech  23.10.2021, 18:10
@bocokwk

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.

0
FaTech  23.10.2021, 18:22
@bocokwk

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

0
einnutzer456127  02.11.2021, 14:34
@bocokwk

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

0