Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2011 10:41:03

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

изменение дробной части float-чисел при дампе json

json работает так:
>>> json.dumps(1.1)
'1.1000000000000001'

вопрос - как исправить? мне надо, чтобы json.dumps срабатывал как str(1.1) в отношении float-чисел



Офлайн

#2 Дек. 9, 2011 11:06:47

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

изменение дробной части float-чисел при дампе json

Где?

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)

In [1]: import json
In [2]: json.dumps(1.1)
Out[2]: '1.1'

In [3]: import simplejson
In [4]: simplejson.dumps(1.1)
Out[4]: '1.1'

Офлайн

#3 Дек. 9, 2011 11:16:24

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

изменение дробной части float-чисел при дампе json

python 2.6 модуль json, операционка fedora
я знаю, что воспроизводится не всегда и не везде. видел такие “преобразования” на другой системе, но там это было не важно.



Офлайн

#4 Дек. 9, 2011 13:14:19

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

изменение дробной части float-чисел при дампе json

Сейчас нет под рукой fedor'ы - вот тут, похоже проблему решили:
http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module

Офлайн

#5 Дек. 9, 2011 16:45:56

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

изменение дробной части float-чисел при дампе json

s0rg, спасибо большое! Вы очень помогли!
Я сам гуглил, но не нашёл…

процитирую решение:

from json import encoder
encoder.FLOAT_REPR = lambda o: format(o, '.2f')



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version