Positive Zahl zu negativer Zahl in JavaScript?

Lesezeit: 3 Minuten

Benutzer-Avatar
Oscar Patensohn

Im Grunde das Gegenteil von abs. Wenn ich habe:

if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
  slideNum = -slideNum
}
console.log(slideNum)

Egal welche Konsole gibt immer eine positive Zahl zurück. Wie behebe ich das?

Wenn ich mache:

if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
  _selector.animate({
    left: (-slideNum * sizes.images.width) + 'px'
  }, 750, 'InOutPDX')
} else {
  _selector.animate({
    left: (slideNum * sizes.images.width) + 'px'
  }, 750, 'InOutPDX')
}

Es funktioniert zwar, aber es ist nicht “DRY” und einfach nur dumm, einen ganzen Codeblock NUR für a zu haben -.

Math.abs(num) => Always positive
-Math.abs(num) => Always negative

Sie erkennen jedoch, dass für Ihren Code

if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum = -slideNum }
console.log(slideNum)

Wenn der gefundene Index 3 ist und slideNum 3 ist,
dann 3 < 3-1 => falsch
also slideNum bleibt positiv??

Für mich sieht das eher nach einem Logikfehler aus.

Benutzer-Avatar
Jakob Hämpl

Das Gegenteil von abs ist Math.abs(num) * -1.

  • Kürzer: return -Math.abs(num);

    – sarunast

    12. Juni 2015 um 12:59 Uhr

  • Dies gibt immer einen negativen Wert zurück, es ändert das Vorzeichen nicht, wenn num negativ ist.

    – Entw

    15. Juni um 10:29 Uhr

Benutzer-Avatar
Blake

Die Grundformel, um Positiv zu Negativ oder Negativ zu Positiv umzukehren:

i - (i * 2)

  • Was ist falsch mit i * -1? Ich bin mir auch nicht sicher, ob dies die eigentliche Frage beantwortet.

    – Andreas Friseur

    28. September 2012 um 6:56 Uhr


  • Es ist architektonisch abhängig, aber 0 – ich könnte schneller sein

    – Ben Taliadoros

    23. Oktober 2014 um 15:10 Uhr

  • @AndrewBarber i * -1 scheint in der aktuellen Chrome-Version nicht zu funktionieren. Verwenden Sie -Math.abs(1) nicht sicher, warum dies funktioniert, hoffentlich kann jemand das Warum näher erläutern.

    – Philipp Rollin

    2. August 2016 um 5:46 Uhr


  • @ PhilipRollins i * -1 wird immer funktionieren. Ich weiß nicht, wie du es versucht hast, vielleicht hattest du einen Tippfehler. Aber … was ist los mit i = -i Anstatt von i = i * -1 (oder i *= -1) um positiv zu negativ oder negativ zu positiv umzukehren?

    – Diego ZoracKy

    25. August 2016 um 6:17 Uhr


  • @DiegoZoracKy Das dachte ich auch, aber nicht für die Version von Chrome, die ich ausgeführt habe, und es funktionierte in Firefox, sodass ein Tippfehler nicht in Frage kommt. Ich bin gerade auf Linux, aber es steht Ihnen frei, Ihre Theorie auf Chrome zu testen. Denken Sie an die automatischen Chrome-Updates, damit alle Fehlerkorrekturen bereits angewendet und alle neuen Fehler an die Community weitergegeben werden, was bedeutet, dass dies ein Fehler sein könnte, der nur ein paar Tage gedauert hat und jetzt für immer behoben ist.

    – Philipp Rollin

    25. August 2016 um 20:10 Uhr

Benutzer-Avatar
Benjamin Williams

Um eine negative Version einer Zahl in JavaScript zu erhalten, können Sie immer die verwenden ~ bitweiser Operator.

Zum Beispiel, wenn Sie haben a = 1000 und Sie es in ein Negativ umwandeln müssen, können Sie Folgendes tun:

a = ~a + 1;

Was dazu führen würde a Sein -1000.

Javascript hat dafür einen eigenen Operator: unäre Negation.

TL;DR: Es ist das Minuszeichen!

Um eine Zahl zu negieren, stellen Sie ihr einfach ein Präfix voran - auf möglichst intuitive Weise. Keine Notwendigkeit, eine Funktion zu schreiben, verwenden Math.abs() mal -1 oder verwenden Sie den bitweisen Operator.

Unäre Negation funktioniert mit Zahlenliteralen:

let a = 10;  // a is `10`
let b = -10; // b is `-10`

Es funktioniert auch mit Variablen:

let x = 50;
x = -x;      // x is now `-50`

let y = -6;
y = -y;      // y is now `6`

Sie können es sogar mehrmals verwenden, wenn Sie den Gruppierungsoperator verwenden (auch bekannt als Klammern:

l = 10;       // l is `10`
m = -10;      // m is `-10`
n = -(10);    // n is `-10`
o = -(-(10)); // o is `10`
p = -(-10);   // p is `10` (double negative makes a positive)

All dies funktioniert auch mit einer Variablen.

Benutzer-Avatar
Krisztián Balla

var x = 100;
var negX = ( -x ); // => -100

Benutzer-Avatar
Vibhor Dube

num * -1

Dies würde es für Sie tun.

1257890cookie-checkPositive Zahl zu negativer Zahl in JavaScript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy