将小数点转换为';e';用python
这是我从服务器得到的响应将小数点转换为';e';用python,python,json,python-3.x,floating-point,Python,Json,Python 3.x,Floating Point,这是我从服务器得到的响应 [{"type":"bid","price":0.00000026,"amount":737.15054457,"tid":200001915,"timestamp":1516036570}] 我正在尝试使用 json_data = json.loads (req.text) 但是,当我尝试使用json_数据[0]['price']读取“price”时,输出是2.6e-07 我尝试将数据解析为json\u data=json.loads(req.text,parse
[{"type":"bid","price":0.00000026,"amount":737.15054457,"tid":200001915,"timestamp":1516036570}]
我正在尝试使用
json_data = json.loads (req.text)
但是,当我尝试使用json_数据[0]['price']
读取“price”时,输出是2.6e-07
我尝试将数据解析为
json\u data=json.loads(req.text,parse\u float=Decimal)
,但仍然没有区别 这是python显示浮动的方式
price = 0.00000026
print(price)
产出:2.6e-07
如果您希望看到它正常,可以这样打印:
print('{0:.8f}'.format(price))
输出:0.00000026您的值被解析为十进制,它只是以指数形式显示,因为它更紧凑:
import json
import decimal
>>> x = json.loads('{"a":0.00000000000000026}', parse_float=decimal.Decimal)
>>> repr(x)
"{'a': Decimal('2.6E-16')}"
但是,您可以看到,与浮点不同,精度保持不变:
>>> x['a'] + 1
Decimal('1.00000000000000026')
>>> 1 + 2.6e-16
1.0000000000000002
所以一切都按预期进行。这就是python表示浮点值0.00000026的方式。它与JSON无关。到底是什么问题?您是否试图对该数字执行不起作用的操作?您有正确的值,您的问题仅在于打印时的表示形式。只需选择一种不同的格式来打印它,比如
print(格式(json_数据['price'],'.8f'))
。顺便说一句,如果你想要一分钱完美的计算,将价格存储为浮点数可能会带来不愉快的影响。将值作为文本读取并从中构造Python十进制可能是有意义的。在使用格式(对象“”)
时,不要使用'{.:}.format(object)
,这样Python就不必解析字符串模板中的{.:}
部分了。看。