Преобразовать научные обозначения в Float

Обнаружена проблема, при которой мои данные JSON печатаются как научная нотация, а не float.

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   

Он печатает следующее значение; 1.357e-05. Мне нужно, чтобы это было float с 8 символами за десятичной точкой (0.00001370)

Как вы можете видеть здесь → http://i.imgur.com/FCVM1UN.jpg, мой графический интерфейс отображает первую строку правильно (с использованием того же кода).

Ответы

Ответ 1

Вы смотрите на форматирование str() по умолчанию для чисел с плавающей запятой, где научная нотация используется для достаточно малых или больших чисел.

Вам не нужно преобразовывать это, само значение является правильным поплавком. Если вам нужно отобразить это в другом формате, форматируйте его явно:

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

Здесь f формат всегда использует фиксированную точку для значения. Точность по умолчанию - 6 цифр; .8 инструктирует f formatter вместо 8 цифр.

Формат строки по умолчанию по существу совпадает с format(fpvalue, '.12g'); формат g использует либо научное, либо фиксированное представление точки в зависимости от показателя числа.

Ответ 2

Вы можете использовать форматирование печати:

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

Редактировать:

print('%.08f' % x)