Gibt es in JavaScript eine mathematische Funktion, die Zahlen in positive Werte umwandelt?
javascript
Dave
quelle
quelle
var x = -100; ~x+1 === 100
abervar x = 100; ~x+1 === -100
.Math.abs
macht es immer positiv, während die Ergänzung einfach das Zeichen umkehrt.Was ist mit
x *= -1
? Ich mag seine Einfachheit.quelle
x
wird umgedreht. Wennx = 23
und in diese Gleichung hineingeschobenx
wird, ist gleich-23
. Mit den Worten von Herrn Escalante: "Ein positives mal ein negatives entspricht einem negativen. Ein negatives mal ein negatives entspricht einem positiven." ... "Wie erreiche ich diese Kiiiiiiids?!"x=23
, dann wird es -23. Wie die Frage lautet: "Konvertieren Sie eine negative Zahl in eine positive Zahl in JS", aber das Obige wird jede Zahl umdrehen, sei es positiv oder negativ.x
immer positiv. Ich entschuldige mich @myusuf.Math.abs(x)
oder wenn Sie sicher sind , dass der Wert vor der Konvertierung negativ ist, stellen Sie einfach ein reguläres Minuszeichen voran :x = -x
.quelle
Das Minuszeichen (-) kann positive Zahlen in negative Zahlen und negative Zahlen in positive Zahlen umwandeln.
x=-y
ist visueller Zucker fürx=(y*-1)
.quelle
quelle
Ich finde diese Lösung leicht zu verstehen.
quelle
Wenn Sie interessanten Code schreiben möchten, den niemand sonst jemals aktualisieren kann, versuchen Sie Folgendes:
~ --x
quelle
~
Operator konvertiert die Zahl in eine 32-Bit-Ganzzahl. Wenn Sie einen Schwimmer als Eingabe haben, wird dieser abgespritzt.Ich weiß, dass dies etwas spät ist, aber für Leute, die damit zu kämpfen haben, können Sie die folgenden Funktionen verwenden:
Schalten Sie eine beliebige Zahl positiv
Drehen Sie eine beliebige Zahl negativ
Invertieren Sie eine beliebige Zahl
quelle
Negativ bis positiv
Positiv bis negativ
quelle
Das Multiplizieren mit (-1) ist der schnellste Weg, um eine negative Zahl in eine positive umzuwandeln. Aber Sie müssen aufpassen, dass mein Fehler nicht von einer positiven in eine negative Zahl umgewandelt wird! Daher ist eine zusätzliche Überprüfung erforderlich ...
Dann ist Math.abs, Math.floor und parseInt am langsamsten.
https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1
quelle
Ich habe so etwas selbst gemacht.
Es prüft, ob die Zahl negativ ist, und multipliziert sie mit -1. Dies gibt einen Wert zurück. Es liegt an Ihnen, ob Sie ihn erfassen. Wenn Sie es etwas zuweisen möchten, sollten Sie wahrscheinlich Folgendes tun:
Aber es kommt wirklich darauf an, was Ihr Ziel ist. Für mich war es einfach, es positiv zu machen, wenn es negativ ist, sonst nichts zu tun. Daher das '' im Code. In diesem Fall habe ich einen tertiären Operator verwendet, weil ich wollte, es könnte sehr gut sein:
Ich habe hier die bitweise Lösung gesehen und wollte auch diese kommentieren.
Diese Lösung ist meiner Meinung nach sehr ausgefallen, wir könnten sie so umschreiben:
In einfachen Worten, wir nehmen die negative Zahl, nehmen eine davon weg und invertieren sie dann bitweise. Wenn wir es normalerweise bitweise invertiert hätten, würden wir einen Wert 1 zu klein bekommen. Sie können dies auch tun:
Das wird dasselbe tun, aber zuerst invertieren und dann 1 zur positiven Zahl addieren. Obwohl Sie dies NICHT tun können:
Dies funktioniert aufgrund der Priorität nicht . Postfix-Operatoren, wie
num++
sie vor ~ ausgewertet werden, und der Grund,++num
warum das Präfix nicht funktioniert, obwohl es dieselbe Priorität wie bitweises NOT (~) hat, liegt daran, dass es von rechts nach links ausgewertet wird. Ich habe versucht, sie auszutauschen, aber es scheint, dass das Präfix im Vergleich zu bitweise NICHT etwas pingelig ist. Die +1 funktioniert, weil '+' eine höhere Priorität hat und später ausgewertet wird.Ich fand diese Lösung ziemlich lustig und beschloss, sie zu erweitern, da sie nur hineingeworfen wurde und die Leute, die sie betrachteten, sie wahrscheinlich ignorierten. Obwohl ja, funktioniert es nicht mit Schwimmern.
Ich hoffe, dass sich dieser Beitrag nicht von der ursprünglichen Frage entfernt hat. : /
quelle
Mein minimaler Ansatz
Zum Umwandeln einer negativen Zahl in eine positive und umgekehrt
quelle
Sie können den Operator ~ verwenden , der die Zahl logisch in ein Negativ konvertiert und 1 zum Negativ addiert:
quelle
Ich kenne einen anderen Weg, es zu tun. Diese Technik funktioniert negativ bis positiv und umgekehrt
Und umgekehrt:
LIVE CODE:
quelle
Für eine funktionale Programmierung hat Ramda hierfür eine schöne Methode. Die gleiche Methode funktioniert von positiv nach negativ und umgekehrt.
https://ramdajs.com/docs/#negate
quelle
Wenn Sie möchten, dass die Zahl immer positiv ist, können Sie dies tun.
Sie könnten dies auch versuchen, aber ich empfehle es nicht:
Das Problem dabei ist, dass Sie möglicherweise die Zahl in negativ ändern, dann in eine Zeichenfolge konvertieren und das - aus der Zeichenfolge entfernen und dann wieder in int konvertieren. Was ich vermuten würde, würde mehr Verarbeitung erfordern, als nur die andere Funktion zu verwenden.
Ich habe dies in PHP getestet und die erste Funktion ist schneller, aber manchmal macht JS einige verrückte Dinge, also kann ich nicht sicher sagen.
quelle
n*-n
sollte seinn*-1
. Ich würde das Beispiel jedoch insgesamt entfernen, da die Typkonvertierungen und der Methodenaufruf im Vergleich zur Einfachheit des ersten Beispiels sehr ineffizient sind. Selbst JS 'Skurrilität kann hier unmöglich helfen