Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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
将小数点转换为';e';用python_Python_Json_Python 3.x_Floating Point - Fatal编程技术网

将小数点转换为';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就不必解析字符串模板中的
{.:}
部分了。看。