Transférer des données en virgule flottante de Python vers JavaScript sans perte de chiffres

Voulez-vous jamais apporter un nombre à virgule flottante 64 bits créé en Python à JavaScript tel quel? Les deux sont IEEE-754 64 bits (signe 1 bit, pseudonyme 52 bits, exposant 11 bits).

J'aurais aimé pouvoir le transmettre tel quel, mais je ne suis pas content que si je le vide et le mette en décimal, il sera arrondi.

Cette entrée détaille comment passer un nombre à virgule flottante tel quel, sans erreur.

En réalité, JavaScript est défini par la spécification ECMAScript, et Python est le même que C double, de sorte qu'il a le même format dans la plupart des environnements OS existants.

Exporter en tant que chaîne de représentation d'octets à virgule flottante en Python

float64 est un tableau d'octets utilisant struct.pack, puis une chaîne hexadécimale au format. Il est émis dans l'ordre des octets du réseau.

dump.py


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

Bien qu'il soit un peu différent de cette explication, vous pouvez également le restaurer comme suit.

load.py


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

Charger une chaîne de représentation d'octets en JavaScript

Utilisez le TypedArray familier

>  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

Oui. J'ai pu le lire. Je l'ai essayé avec Python 3.4 sur Mac OS X 10.9 et node.js 0.12.2.

Recommended Posts

Transférer des données en virgule flottante de Python vers JavaScript sans perte de chiffres
Comment éviter la duplication des données lors de la saisie de Python vers SQLite.
[Introduction au Data Scientist] Bases de Python ♬
[Python --open3d] Comment convertir des données d'obj de modèle 3D en nuage de points
[Python] De l'analyse morphologique des données CSV à la sortie CSV et à l'affichage graphique [GiNZA]
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Modifiez le point décimal de la journalisation de, à.
[Python] Flux du scraping Web à l'analyse des données
Python> tuple> (3., 1., 4.) à 3.00000, 1.00000, 4.00000 (avec 5 chiffres décimaux)> .join utilisé
Exemple d'application de Python à l'ingénierie: recherche de paramètres de formule de calcul approximative à partir de données réelles
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Résumé des outils nécessaires pour analyser les données en Python
Comment obtenir le nombre de chiffres en Python
Comment récupérer des données d'image de Flickr avec Python
Comment convertir des nombres à virgule flottante en nombres binaires en Python
Envoyer des données de Python au traitement via une communication socket
DataNitro, implémentation de la fonction de lecture des données de feuille
Comprendre l'état de la perte de données - Python vs R
[Bases de la science des données] Collecte de données depuis RSS avec python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
SIGNATURE Quête ② De la création du modèle de ciblage à la création des données soumises
Je veux démarrer beaucoup de processus à partir de python
[Python] Extrayez des données texte à partir de données XML de 10 Go ou plus.
Créer un environnement Python et transférer des données vers le serveur
L'histoire de la copie de données de S3 vers TeamDrive de Google
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
Appuyez sur REST en Python pour obtenir des données de New Relic
Météorologie x Python ~ De l'acquisition de données météorologiques à l'analyse spectrale ~
Transmettez les données OpenCV de la bibliothèque C ++ d'origine à Python
Un mémo d'un programme qui récupère une date à deux chiffres avec javascript, Ruby, Python ou un script shell.
Publier de Python vers Slack
Flirter de PHP à Python
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
Différentes façons de créer un tableau de nombres de 1 à 10 en Python.
[Introduction to Data Scientists] Bases de Python ♬ Branchements conditionnels et boucles
[Introduction aux Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc.