web-dev-qa-db-fra.com

Convertir la notation scientifique en flottant

Rencontré un problème où mes données JSON sont imprimées sous forme de notation scientifique au lieu d'un flottant.

import urllib2
import json
import sys

url = 'https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc-quid'
json_obj = urllib2.urlopen(url)
QUID_data = json.load(json_obj)

QUID_MarketName_Trex = QUID_data["result"][0]["MarketName"][4:9]
QUID_Last_Trex = QUID_data["result"][0]["Last"]
QUID_High_Trex = QUID_data["result"][0]["High"]
QUID_Low_Trex = QUID_data["result"][0]["Low"]
QUID_Volume_Trex = QUID_data["result"][0]["Volume"]
QUID_BaseVolume_Trex = QUID_data["result"][0]["BaseVolume"]
QUID_TimeStamp_Trex = QUID_data["result"][0]["TimeStamp"]
QUID_Bid_Trex = QUID_data["result"][0]["Bid"]
QUID_Ask_Trex = QUID_data["result"][0]["Ask"]
QUID_OpenBuyOrders_Trex = QUID_data["result"][0]["OpenBuyOrders"]
QUID_OpenSellOrders_Trex = QUID_data["result"][0]["OpenSellOrders"]
QUID_PrevDay_Trex = QUID_data["result"][0]["PrevDay"]
QUID_Created_Trex = QUID_data["result"][0]["Created"]
QUID_Change_Trex = ((QUID_Last_Trex - QUID_PrevDay_Trex)/ QUID_PrevDay_Trex)*100
QUID_Change_Var = str(QUID_Change_Trex)
QUID_Change_Final = QUID_Change_Var[0:5] + '%'

print QUID_Last_Trex   

Il imprime la valeur suivante; 1.357e-05. J'ai besoin que ce soit un flottant avec 8 caractères derrière la décimale (0,00001370)

Comme vous pouvez le voir ici -> http://i.imgur.com/FCVM1UN.jpg , mon interface graphique affiche la première ligne correcte (en utilisant exactement le même code).

29
Loops

Vous regardez la par défaut str() formatage des nombres à virgule flottante, où la notation scientifique est utilisée pour des nombres suffisamment petits ou grands.

Vous n'avez pas besoin de le convertir, la valeur elle-même est un flottant approprié. Si vous devez l'afficher dans un format différent, formatez-le explicitement :

>>> print 0.00001357
1.357e-05
>>> print format(0.00001357, 'f')
0.000014
>>> print format(0.00001357, '.8f')
0.00001357

Ici, le format f utilise toujours une notation à virgule fixe pour la valeur. La précision par défaut est de 6 chiffres; le .8 demande au formateur f d'afficher à la place 8 chiffres.

Le format de chaîne par défaut est essentiellement le même que format(fpvalue, '.12g'); le format g utilise une présentation scientifique ou à virgule fixe en fonction de l'exposant du nombre.

44
Martijn Pieters

Vous pouvez utiliser la mise en forme d'impression:

x = 1.357e-05    
print('%f' % x)

Modifier:

print('%.08f' % x)
3
Evgeny Prokurat