python中将浮点数变成json时,控制小数位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中将浮点数变成json时,控制小数位数相关的知识,希望对你有一定的参考价值。

>>>import json

>>>d = { ‘a‘: 0.333333333, ‘b‘: 0.445444444, ‘c‘: 0.293 }

>>>json.dumps(d)

得到

‘{"a": 0.333333333, "c": 0.293, "b": 0.445444444}‘

 

而我们期望得到

‘{"a": 0.33, "c": 0.29, "b": 0.45}‘

 

以下是解决办法

http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module

 

import json

def pretty_floats(obj):
    if isinstance(obj, float):
        return round(obj, 3)
    elif isinstance(obj, dict):
        return dict((k, pretty_floats(v)) for k, v in obj.items())
    elif isinstance(obj, (list, tuple)):
        return map(pretty_floats, obj) 
    return obj

d = { a: 0.333333333, b: 0.445444444, c: 0.293 }

print json.dumps(pretty_floats(d))

 

  

以上是关于python中将浮点数变成json时,控制小数位数的主要内容,如果未能解决你的问题,请参考以下文章

当使用print语句输出时,Python将所有浮 点数字格式化为小数点后两位。对吗?

C语言编程序时怎么控制浮点型输出的小数点精确到几位

如何舍入一个浮点数?

JS实现浮点数精确舍入小数点

如何格式化具有最大小数位数且没有额外零填充的浮点数?

Python:在同一行中打印带有首选小数位数的字符串和数字