![]() |
[.NET] Math.Round() macht mich verrückt
Hi zusammen,
.NET macht mich noch wahnsinnig. Gibt es keine saubere Möglichkeit, das hier zu schreiben?
Code:
Da geht absolut jede Übersicht verloren.
intVal = Convert.ToInt32(Math.Round(Convert.ToDouble(tView.Height / 2)));
Minimal schöner wäre es so:
Code:
Das ist jedoch nicht zulässig:
intVal = Convert.ToInt32(Math.Round(tView.Height / 2));
Zitat:
Erwartet hätte ich eine solche Lösung:
Code:
Dass Math.Round() beim Runden auf 0 Nachkommastellen einen Double-Wert zurück gibt ist doch irgendwo krank. :wall:
intVal = Math.Round(tView.Height / 2);
Mit einem Typecast ginge es kurz, doch ich persönlich finde Typecasts unsauber, da man nicht exakt weiß, was da nun wie interpretiert wird (Holzhammermethode):
Code:
intVal = (int)(tView.Height/ 2)
Grüße, Matze |
Re: [.NET] Math.Round() macht mich verrückt
Von welchem Typ ist tView.Height? Diese Fehlermeldung mit dem Decimal kann ich mir im Moment nämlich nicht erklären. :gruebel:
Generell finde ich es meist undurchsichtiger, was eine Convert-Funktion macht als was ein Cast macht. Dein Cast würde btw immer abrunden, oder? |
Re: [.NET] Math.Round() macht mich verrückt
Zitat:
Zitat:
Ich habe es lieber, wenn man exakt sehen kann, was mit den Werten passiert. Und das ist bei den Convert-Methoden der Fall. |
Re: [.NET] Math.Round() macht mich verrückt
Zitat:
Zitat:
Zitat:
Lösung für Dein Problem:
Code:
Also einfach "2.0" statt "2" schreiben.
int d = 5;
int intVal = Convert.ToInt32(Math.Round(d / 2.0)); |
Re: [.NET] Math.Round() macht mich verrückt
Was gefällt dir denn an diesem Code nicht?
Code:
int intVal = treeView.Height / 2;
|
Re: [.NET] Math.Round() macht mich verrückt
Zitat:
Daher wundert mich, dass, abhängig von der Deklaration von intVal, du das hier nicht nutzt:
Code:
//Edit: Ach Mensch alzaimar, das war mein Part. :mrgreen:
intVal = tView.Height/ 2;
|
Re: [.NET] Math.Round() macht mich verrückt
Danke Christian, dann mache ich das so. :)
@Mark/Daniel: Ich habe immer ein ungutes Gefühl, wenn ich einem Integer einen Nicht-Integer zuweise, da damit irgendwas gemacht wird, was nicht auf den ersten Blick ersichtlich ist. Ich habe es gerne "typensicher", zumindest im Code. Ich mag zwar PHP mit seinen komplett fehlenden Typen, aber das ist eine andere Geschichte. Wobei die Beschreibung von Convert.ToInt32() auch nicht einleuchtender ist. Edit: Um nochmals auf die von mir angesprochene Problematik zurückzukommen: Was ist der Sinn dahinter, dass Math.Round() bei fehlender Angabe der Nachkommastellen und somit einem Runden auf eine Ganzzahl einen Double zurück gibt? Das ist für mich völliger Blödsinn. :gruebel: |
Re: [.NET] Math.Round() macht mich verrückt
Zitat:
Zitat:
|
Re: [.NET] Math.Round() macht mich verrückt
Ich möchte damit nur eine Komponenten mittig positionieren. Also auf +/- einen Pixel kommt's mir da nicht an. Daher gingen beide Möglichkeiten.
Aber prinzipiell war es für mich mal interessant zu wissen, ob man das in C# bzw .NET sauber lösen kann. Meine Meinung ist: Jain mit Tendenz zu Nein. :stupid: |
Re: [.NET] Math.Round() macht mich verrückt
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz