Entwickler-Ecke

C# - Die Sprache - Typecasting Frage (Color.FromArgb und Math.Round)


Jakob_Ullmann - So 20.09.09 15:28
Titel: Typecasting Frage (Color.FromArgb und Math.Round)
Hi!

Ich weiß erstmal nicht, ob die Frage hier richtig ist, da ich mich noch nicht mit anderen .NET-Sprachen beschäftigt habe (mir reicht es schon, wenn ich C# einigermaßen kann), aber ich denke schon, dass das C#-spezifisch ist.

Bei der folgenden Zeile:


C#-Quelltext
1:
2:
myBmp.SetPixel(i, j, Color.FromArgb(255, Math.Round(i / 2),
                                                        4 * j, 255));


Meckert Visual C#. Stattdessen geht es nur mit


C#-Quelltext
1:
2:
myBmp.SetPixel(i, j, Color.FromArgb(255, (int)Math.Round((double)(i / 2)),
                                                        4 * j, 255));


Da wollte ich mal fragen, ob es vielleicht eine schönere Möglichkeit gibt, den Code zum Laufen zu bringen, da das ja sonst die Lesbarkeit des Codes ganz schön behindert.


Kha - So 20.09.09 15:34


C#-Quelltext
1:
Color.FromArgb(255, i / 2, ...                    

:zwinker:

Rundet im Gegensatz zu Round immer ab, aber das sollte in diesem Fall ja nicht weiter stören, oder ;) ?
Wobei ich gerade sehe, dass deine Version das auch macht. Du führst erst eine int-Division durch und castest erst danach nach double. Richtig wäre

C#-Quelltext
1:
(int)Math.Round((double)i / 2)                    

oder

C#-Quelltext
1:
(int)Math.Round(i / 2d)                    


Jakob_Ullmann - Mo 21.09.09 16:13

In diesem Fall hab ich wohl angenommen, dass das genauso wie bei Delphi läuft. Vielen Dank! :wink:

An dem Punkt merke ich, dass ich die Hälfe dessen, was ich vorgestern gelesen habe, schon wieder vergessen habe. :lol:

EDIT: Ich habe noch eine Frage: Was ist der Unterschied zwischen 2f, 2F und 2d? Ich dachte, float wäre ein Oberbegriff für double und decimal?? OK, hab's begriffen, dass float = Single ist...