将geojson数据打印到控制台时浮点数丢失

问题描述 投票:1回答:1

我正在用python阅读一个巨大的geojson文件。每当我打印一组坐标时,即使存在于json文件中,最后一个小数位也会被删除。

例如:

在json文件中:

[110.888769531250034,19.991943359375]

打印到控制台时:

[110.88876953125003,19.991943359375]

这里是我一直在使用的快速而肮脏的代码,以测试为什么会这样。

import json

with open('world-json.json', encoding='UTF-8') as f:
    data = json.load(f)


for i in data['features']:
    name = i.get('properties').get('ADMIN')
    coordinates = i.get('geometry').get('coordinates')

    if name == 'China':
        for i in coordinates:
            for p in i:
                for z in p:
                    print(z)

我曾尝试搜索发生这种情况的原因,但我的google-fu显然很弱。

python json geojson
1个回答
0
投票

我认为decimal library正是您想要的。


我不知道您的json看起来如何,但是假设代码如下。

from decimal import * # ★ New line
import json

with open('world-json.json', encoding='UTF-8') as f:
  data = json.load(f)


for i in data['features']:
  name = i.get('properties').get('ADMIN')
  coordinates = map(Decimal, i.get('geometry').get('coordinates')) # ★ Changed line

  if name == 'China':
    for i in coordinates:
      for p in i:
        for z in p:
          print(str(z)) # ★ Changed line
© www.soinside.com 2019 - 2024. All rights reserved.