将科学记数法转换为浮点数

时间:2014-08-02 21:35:44

标签: python decimal notation

遇到一个问题,即我的JSON数据以科学记数法打印而不是浮动。

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。 我需要这个是一个带有8个字符的浮点数(0.00001370)

正如你在这里看到的那样 - > http://i.imgur.com/FCVM1UN.jpg,我的GUI显示第一行正确(使用完全相同的代码)。

3 个答案:

答案 0 :(得分:42)

您正在查看浮点数的默认str()格式,其中科学计数法用于足够小或大的数字。

你不需要转换它,值本身是一个合适的浮点数。如果您需要以其他格式显示,format it explicitly

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

此处f格式始终对值使用固定点表示法。默认精度为6位数; .8指示f格式化程序显示8位数字。

默认字符串格式与format(fpvalue, '.12g')基本相同; g格式使用科学或定点呈现,具体取决于数字的指数。

答案 1 :(得分:3)

您可以使用打印格式:

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

编辑:

print('%.08f' % x)

答案 2 :(得分:0)

有一些方法:


#1 float(...) +可选round().format()

x = float(1.357e-05)
round(x, 6)
"{:.8f}".format(x)

#2,decimal

import decimal

tmp = decimal.Decimal('1.357e-05')
print('[0]', tmp)
# [0] 0.00001357

tmp = decimal.Decimal(1.357e-05)
print('[1]', tmp)
# [1] 0.0000135700000000000005188384444299032338676624931395053863525390625

decimal.getcontext().prec = 6
tmp = decimal.getcontext().create_decimal(1.357e-05)
print('[2]', tmp)
# [2] 0.0000135700

#3与.rstrip(...)

x = ("%.17f" % n).rstrip('0').rstrip('.')

注意:%f有对应的内容:
%f显示标准符号
%e显示科学计数法
%g显示默认值(如果为5个或更多零,则为科学值)