Wie erhalten Sie den absoluten Wert einer Zahl in vb.net?
Ist eine Funktion eingebaut? Ich weiß, dass ich eine Funktion einfach selbst programmieren kann, aber ich möchte wissen, ob es dort bereits eine gibt. Es scheint so einfach, ich könnte es wahrscheinlich in drei Zeilen machen, also wäre ich überrascht, wenn es nicht einen gibt ....
Danke!
Auf die Gefahr hin, herabgestimmt zu werden, möchten Sie vielleicht Ihre eigene absolute Wertmethode schreiben, je nachdem, wofür Sie sie verwenden. Das folgende Code-Snippet (Entschuldigung, es ist in C #, aber das gleiche Prinzip gilt):
%Vor%wird zwar gerne kompiliert, aber wenn es ausgeführt wird, wirft die zweite Zeile eine OverflowException mit der hilfreichen Nachricht "Negation des Minimalwerts einer Zweierkomplementnummer ist ungültig." In diesem Fall wählt der Compiler die Überladung von Math.Abs aus, die einen Short akzeptiert und einen Short zurückgibt, und +32768 ist kein gültiger Short. Daher gibt die Methode die Exception aus, selbst wenn Sie gedacht haben, dass Sie antizipieren Dieses Problem, indem Sie iAbs zu einem Int. machen.
Dieser Ausschnitt:
%Vor%wird ohne Ausnahme kompiliert und ausgeführt, aber es ist ziemlich unhandlich, so zu programmieren. Meiner Meinung nach ist das ein sehr hinterhältiger Fehler, weil es in der realen Welt so selten vorkommt (da es für jeden Typ nur einen Wert gibt, der diese Ausnahme erzeugt). Ich stoße leider auf diesen Fehler, wenn ich Math.Abs für die Normalisierung von Audiodaten benutze (was normalerweise ein kurzes [] Array ist), also habe ich mir angewöhnt, meinen eigenen Wrapper rund um Math.Abs zu schreiben Das ist für mich und gibt einfach ein Doppel zurück:
%Vor%mit Überladungen für jeden anderen Typ, mit dem ich umgehen muss. Ich verstehe irgendwie, warum Math.Abs geschrieben wurde, um sich so zu verhalten, aber es kann definitiv die Hintern des Unwissens beißen.
Tags und Links .net vb.net absolute-value