Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将科学记数法转换为浮点数_Python_Decimal_Notation - Fatal编程技术网

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

Python 将科学记数法转换为浮点数,python,decimal,notation,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["resu

遇到了一个问题,我的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)


正如您在这里看到的-->“我的GUI”正确显示第一行(使用完全相同的代码)。

您可以使用打印格式:

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

您正在查看浮点数字的默认格式,其中科学符号用于足够小或足够大的数字

您不需要对此进行转换,该值本身就是一个正确的浮点值。如果需要以不同的格式显示,请执行以下操作:

这里的
f
格式总是使用定点表示法作为值。默认精度为6位;
.8
指示格式化程序改为显示8位数字


默认字符串格式基本上与
格式(fpvalue,.12g')
相同;
g
格式根据数字的指数使用科学或定点表示。

有一些方法:


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


#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(…)

注意:有对应的
%f

%f
显示标准符号
%e
显示科学符号

%g
显示默认值(如果是5个或更多的零)

链接到JSON-->##对象最近一次读取的是“0.00001361”。使用您的解决方案,它将打印“0.000014”。因为某种原因,它被四舍五入。是的,它被四舍五入到圆点后的6个数字。正如Martijn Pieters所写,您可以指定它打印('%.08f'%x')顺便问一下。为什么您希望1.357e-05使用0.00001370而不是0.00001357?谢谢!这是一种加密货币的汇率,最后两个小数点产生了巨大的差异,因此我需要全部8来显示。现在可以了。非常感谢您,先生。我如何才能将此应用于数据帧中的功能?@madman:@Franco:那是。。。不是很有帮助的评论。这对于Python2来说当然是正确的,但是Python3中默认的
str()
格式已经改变,如果您所指的是这种格式的话。你有什么更具体的想法吗?
>>> print 0.00001357
1.357e-05
>>> print format(0.00001357, 'f')
0.000014
>>> print format(0.00001357, '.8f')
0.00001357
x = float(1.357e-05)
round(x, 6)
"{:.8f}".format(x)
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
x = ("%.17f" % n).rstrip('0').rstrip('.')