Nicht sicher, ob das der richtige Weg ist, das zu fragen oder nicht, aber hier ist das Problem.
Wie finde ich bei einem Breitengrad von 26,746346081599476 die Zahl 26,75 als 16. Stelle größer als die Zahl und 26.6875 als 16. Stelle niedriger als die Zahl?
%Vor%Ich benutze JavaScript, daher wäre eine Antwort hilfreich, aber nicht notwendig. Ich könnte es brutal erzwingen, aber ich suche den eleganten Weg, es zu tun.
Das größere Bild ist, dass ich Standardkacheln für eine Kartenanwendung erstellen möchte, an der ich arbeite. Wir verwenden Bing-Maps und ich lade Daten bei Bedarf, jedes Mal, wenn der Benutzer schwenkt oder zoomt. Es wäre schön, das Server-Caching für diese Anfragen zu nutzen, wenn ich die an den Server gesendeten Abfragen standardisieren würde einige Cachetreffer. Wenn ich die Anfragen an den Server nicht standardisiere, ist es höchst unwahrscheinlich, dass derselbe Benutzer genau den gleichen Ort zur gleichen Zeit sieht.
Es besteht also eine höhere Chance, Cache-Treffer zu erhalten: /path/data.json?tl=26.6875,-80.6875&br=26.75,-80.75 als mit: /path/data.json?tl=26.74946187679896,-80.10930061340332&br=26.743234270702878,-80.09607195854187
Alle Antworten außerhalb der Box sind ebenfalls willkommen.
Klingt nach Rundung auf den nächsten 16. ...
%Vor%Sie könnten Zahlen erhalten, die wegen der Float-Repräsentation nicht genau sind, aber das sollte in Ihrem Fall keine Rolle spielen, wenn Sie es nur zum Caching verwenden.
Was sind die kleinsten Fraktionen, an denen Sie interessiert sind? IE sind 16tel werden die kleinsten Inkremente sein?
Wenn ja, multiplizieren Sie einfach Ihre Zahl mit 16. Schneiden Sie sie auf ein int und teilen Sie durch 16, um die untere Grenze zu finden. Trunc es zu einem int, addiere 1, dann dividiere durch 16, um die obere Grenze zu finden.
Einige Strategien, die noch nicht veröffentlicht wurden:
A) Erstellen Sie eine Nachschlagetabelle, die die Nachkommastellen auf den nächsten 16en abbildet. Verwenden Sie einfach die Präzision, die Sie benötigen (wahrscheinlich Hundertstel).
B) Erstellen Sie eine Tabelle aller 16tel von 0 bis 1, und führen Sie eine binäre Suche mit der Nummer% 1 durch.
Tags und Links javascript math gis bing-maps decimal