Math.floor() und ~~

Veröffentlicht von am

Mit den Bitweise Operatoren in JavaScript kann man allerlei interessante Dinge anstellen.

So ist es beispielsweise möglich, den Operator "Bitweise Negation" (die Tilde~) zu benutzen, um Zahlen abzurunden:

Mit den Bitweise Operatoren in JavaScript kann man allerlei interessante Dinge anstellen.

So ist es beispielsweise möglich, den Operator "Bitweise Negation" (die Tilde~) zu benutzen, um Zahlen abzurunden:

Hilfreich ist es deswegen, weil das Abrunden einer Zahl mittels des "Bitweise Negation"-Operators in vielen Browsern deutlich schneller ausgeführt wird, als die die Verwendung von Math.floor.

Diese Eigenschaft ist insbesondere dann nützlich, wenn das Abrunden einer Zahl sehr oft wiederholt werden muss, wie zum Beispiel beim manipulieren der Pixeldaten eines <canvas>-Elements, bei dem mehrere tausend Pixel einzeln verglichen werden müssen.

Da ich genau diesen Anwendungsfall in meinen Projekten (siehe z.B: glitch-canvas relativ oft habe, hatte ich mir angewohnt, allgemein ~~ als Ersatz von Math.floor() einzusetzen.

Das war ein Fehler.

Denn es gibt Zahlen, für welche die Ergebnisse von ~~ und Math.floor() nicht übereinstimmen:

Hilfreich ist es deswegen, weil das Abrunden einer Zahl mittels des "Bitweise Negation"-Operators in vielen Browsern deutlich schneller ausgeführt wird, als die die Verwendung von Math.floor.

Diese Eigenschaft ist insbesondere dann nützlich, wenn das Abrunden einer Zahl sehr oft wiederholt werden muss, wie zum Beispiel beim manipulieren der Pixeldaten eines <canvas>-Elements, bei dem mehrere tausend Pixel einzeln verglichen werden müssen.

Da ich genau diesen Anwendungsfall in meinen Projekten (siehe z.B: glitch-canvas relativ oft habe, hatte ich mir angewohnt, allgemein ~~ als Ersatz von Math.floor() einzusetzen.

Das war ein Fehler.

Denn es gibt Zahlen, für welche die Ergebnisse von ~~ und Math.floor() nicht übereinstimmen:

Viele Abkürzungen im Code sind für Spezialfälle hilfreich, sie sollte allerdings mit Bedacht eingesetzt und nicht verallgemeinert werden. Deswegen sind sie ja Abkürzungen.

Hamma wieder was gelernt, recht herzlichen Dank für die Aufmerksamkeit, bis zum nächsten Mal!

Hinterlasse einen Kommentar

Verfügbare Formatierungen

Benutze Markdown-Befehle oder ihre HTML-Äquivalente, um deinen Kommentar zu formatieren:

Textauszeichnungen
*kursiv*, **fett**, ~~durchgestrichen~~, `Code` und <mark>markierter Text</mark>.
Listen
- Listenpunkt 1
- Listenpunkt 1
1. Nummerierte Liste 1
2. Nummerierte Liste 2
Zitate
> Zitierter Text
Code-Blöcke
```
// Ein einfacher Code-Block
```
```php
// Etwas PHP-Code
phpinfo();
```
Verlinkungen
[Link-Text](https://example.com)
Vollständige URLs werden automatisch in Links umgewandelt.

Auf der eigenen Website geantwortet? Sende eine Webmention!