Absoluter Wert in vb.net

7

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!

    
Cyclone 01.09.2009, 23:57
quelle

4 Antworten

16

Math.Abs ​​(val)

MSDN-Verknüpfung

    
Alex Papadimoulis 02.09.2009, 00:00
quelle
8

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.

    
MusiGenesis 02.09.2009 01:01
quelle
1

Verwenden Sie Math.Abs ​​.

    
Vinay Sajip 01.09.2009 23:59
quelle
1

Die Funktion ist Math.Abs ​​

    
Jason Irwin 01.09.2009 23:59
quelle

Tags und Links