从 URL 读取 JSON 正在读取奇怪的浮点数

Posted

技术标签:

【中文标题】从 URL 读取 JSON 正在读取奇怪的浮点数【英文标题】:Reading JSON from URL is reading weird floats 【发布时间】:2022-01-19 07:35:14 【问题描述】:

我尝试读取一个 json 文件 输出给出奇怪的浮点数

250:4.918e-06

251: 0.0006678

252: 4.366e-07

253: 3.0054e-06

254: 3.0942e-05

我做错了什么?

url= 'https://cryptobubbles.net/backend/data/currentBubbles1000.json'
    
    user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
    headers='User-Agent':user_agent, 
    
    req= urllib.request.Request(url,None,headers)
    teller = 0
    
    def get_data_binance():
        global teller
        json_content = json.loads(urlopen(req).read())
        for coins in json_content:
            if coins['binanceSymbol'] and coins['data']['btc']['price']:
                teller += 1
                zeroteller = str(teller)
                zero_filled_number = zeroteller.zfill(3)
                binancefilled = coins['binanceSymbol']
                #print(zero_filled_number+ ': '+binancefilled.ljust(12)+ ' '+str(coins['data']['usd']['price']))
                print (zero_filled_number+ ': '+str(coins['data']['btc']['price']))

【问题讨论】:

没有错,它只是浮​​动的另一种表示,工作方式相同。只需确保在打印时正确格式化即可。 如果您需要准确性,您应该改用Decimals。 【参考方案1】:

4.918e-06 是一种科学记数法,用于数学、物理、化学、天文学和其他科学,用于处理非常大或非常小的数字。使用科学记数法,数字的加减乘除变得简单得多。

4.918e-06 = 4.918 x 10-6 = 0.000004918

另见Convert Scientific Notation to Float

【讨论】:

有没有办法按原样读取 json 而不显示这种科学记数法?

以上是关于从 URL 读取 JSON 正在读取奇怪的浮点数的主要内容,如果未能解决你的问题,请参考以下文章

在Python中的小数点后面的浮点数中添加零

如何在 C++ 中快速解析空格分隔的浮点数?

无法将字符串转换为 pandas 中的浮点数(ValueError)

组态王使用485如何读取仪表浮点数?

使用 JSON 解析来自 Web 服务的浮点数

如何正确地将作为 CSV 文件中字符串的浮点数/双精度数作为浮点数/双精度数导入程序?