Übertragen Sie Gleitkommadaten von Python ohne Ziffernverlust nach JavaScript

Möchten Sie jemals eine in Python erstellte 64-Bit-Gleitkommazahl so wie sie ist in JavaScript integrieren? Beide sind IEEE-754 64-Bit (Vorzeichen 1 Bit, Pseudonym 52 Bit, Exponent 11 Bit).

Ich wünschte, ich könnte es so weitergeben, wie es ist, aber ich bin nicht glücklich, dass es gerundet wird, wenn ich es ablege und dezimal lösche.

Dieser Eintrag beschreibt, wie eine Gleitkommazahl unverändert ohne Fehler übergeben wird.

In der Realität wird JavaScript durch die ECMAScript-Spezifikation definiert, und Python ist dasselbe wie C double, sodass es in den meisten vorhandenen Betriebssystemumgebungen dasselbe Format hat.

In Python als Gleitkommazahl-Byte-Repräsentationszeichenfolge exportieren

float64 ist ein Byte-Array, das struct.pack und dann eine hexadezimale Zeichenfolge im Format verwendet. Es wird in der Reihenfolge der Netzwerkbytes ausgegeben.

dump.py


>>> import numpy as np
>>> import struct
>>> import binascii
>>> a = np.float64(10.12345456)
>>> binascii.hexlify(struct.pack("!d", a))
'40243f356fa37bf1'

Obwohl es sich ein wenig von dieser Erklärung unterscheidet, können Sie es auch wie folgt wiederherstellen.

load.py


>>> b = struct.unpack('!d', binascii.unhexlify('40243f356fa37bf1'))[0]
>>> a == b
True

Laden Sie eine Byte-Repräsentationszeichenfolge in JavaScript

Verwenden Sie das bekannte TypedArray

>  a = new ArrayBuffer(8)
> b = new Float64Array(a)
> c = new Uint32Array(a)
> d = '40243f356fa37bf1'
> c[0] = parseInt(d.slice(8, 16), 16)
> c[1] = parseInt(d.slice(0, 8), 16)
> b[0]
10.12345456

Ja. Ich konnte es lesen. Ich habe es mit Python 3.4 unter Mac OS X 10.9 und node.js 0.12.2 versucht.

Recommended Posts

Übertragen Sie Gleitkommadaten von Python ohne Ziffernverlust nach JavaScript
So vermeiden Sie doppelte Daten bei der Eingabe von Python in SQLite.
[Einführung in Data Scientist] Grundlagen von Python ♬
[Python --open3d] So konvertieren Sie 3D-Modellobjektdaten in Punktwolken
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
[Python] Fluss vom Web-Scraping zur Datenanalyse
Python> Tupel> (3., 1., 4.) bis 3.00000, 1.00000, 4.00000 (mit 5 Ziffern)> .join verwendet
Beispiel für die Anwendung von Python auf das Engineering: Ermitteln von Parametern der ungefähren Berechnungsformel aus tatsächlichen Daten
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
So ermitteln Sie die Anzahl der Stellen in Python
So kratzen Sie Bilddaten von Flickr mit Python
So konvertieren Sie Gleitkommazahlen in Python in Binärzahlen
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
Verstehen Sie den Status des Datenverlusts - Python vs. R.
[Grundlagen der Datenwissenschaft] Sammeln von Daten aus RSS mit Python
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
SIGNATE Quest ② Von der gezielten Modellerstellung bis zur Erstellung von Übermittlungsdaten
Ich möchte viele Prozesse von Python aus starten
[Python] Extrahieren Sie Textdaten aus XML-Daten von 10 GB oder mehr.
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Die Geschichte des Kopierens von Daten von S3 auf Googles TeamDrive
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
Drücken Sie in Python auf REST, um Daten von New Relic abzurufen
Meteorologie x Python ~ Von der Wetterdatenerfassung bis zur Spektrumanalyse ~
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Ein Memo eines Programms, das ein zweistelliges Datum mit Javascript, Ruby, Python oder einem Shell-Skript abruft.
Post von Python nach Slack
Flirte von PHP nach Python
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Einführung in die Datenanalyse mit Python P17-P26 [ch02 1.usa.gov Daten von bit.ly]
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)
Verschiedene Möglichkeiten, um in Python ein Array von Zahlen von 1 bis 10 zu erstellen.
[Einführung in Data Scientists] Grundlagen von Python ♬ Bedingte Verzweigung und Schleifen
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und anonyme Funktionen usw.