Laden...

if..else peinliche Frage

Erstellt von Kostas vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.104 Views
K
Kostas Themenstarter:in
597 Beiträge seit 2005
vor 16 Jahren
if..else peinliche Frage

Hallo Zusammen,

wer versteht warum er nicht in den if block springt sondern in else?

 if (((100 / 144) * 145) >= 90.0)
            {
                _Color = Color.YellowGreen;
            }

das kann doch nicht sein oder?

Gruß ...

Gelöschter Account
vor 16 Jahren

ich bin mir nicht sicher aber kann es sein dass das erste ein int und das zweite ein double ist???
konvertier einen begriff doch einfach mal


if ((((double)(100 / 144)) * 145) >= 90.0)
            {
                _Color = Color.YellowGreen;
            }

außerdem wenn man alles als gleitkomma ausrechnet kommt etwas über 100 raus also >90

F
10.010 Beiträge seit 2004
vor 16 Jahren

Rechne doch mal in den schritten:

(100 / 144) == 0;
0 * 145 == 0;

F
722 Beiträge seit 2005
vor 16 Jahren

if (((100.0 / 144.0) * 145.0) >= 90.0)

K
Kostas Themenstarter:in
597 Beiträge seit 2005
vor 16 Jahren

Ich bin voll in die Supper gemeine Falle der Ganzzahldivision reingefallen.

Die 100 ist eine Konstante 100% die werte 144 und 145 bekomme ich aus
der DB. Die 100 muss natürlich 100.0 sein.
Die 90.0 war mir schon klar aber die 100 habe ich jedes mal überlesen.
Danke.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Kostas,

wenn man erst multipliziert kommt man auch bei Integerdivision oft ans Ziel.

((100 * 145) / 144) >= 90

herbivore

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo Herbivore,

also ich hab mir mal irgendwann von einem findigen Programmierer sagen lassen, dass es besser sei, nicht zunächst die "großen" Werte ausrechnen zu lassen, um sie danach wieder teilen zu lassen.

Grund wäre hier dann die potentielle Wertüberschreitung, mit der nicht fortgefahren werden könnte.

Aber in diesem (und in den meisten anderen Fällen) ist der mögliche Wertebereich noch viel zu klein um an diese Grenzen zu stossen.

Es geht mir nur darum, dass das stets beachtet werden soll. Also auch wenn eine Zahl im unteren Wertebereich als Ergebnis feststehen muss, ist eine Multiplikation ein eventueller Faktor für die Werteüberschreitung bei der Errechnung eines Teilwertes.

Ich möchte hier nur sensibilisieren.

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

I
1.739 Beiträge seit 2005
vor 16 Jahren

Schlicht: will man Werte nach dem Komma berücksichtigen: bei (Ganzzahl)Variablen casten, bei Fixwerten bitte das f oder d(d ist besser wenns geht) hinter die Zahl schmeissen...
Kurz: Integerdivisionen vermeiden wenn genauere Werte gefragt sind.