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))

  

时间: 2024-08-11 07:49:14

python中将浮点数变成json时,控制小数位数的相关文章

使用sprintf打印float并控制小数位数时引起的问题

最近在做项目中发现一个Bug,直接把进程搞死,查了一下,居然是一个最不起眼的地方导致的,在此记录一下. 先看下面代码 #include <iostream> #include <stdio.h> using namespace std; int main() { char aa[1024] = {0}; float f = 50.123456; // 本意是想把一个浮点数输出到字符串中,小数位为两位,漏了 sprintf(aa, "%0.*f", f); pri

js中控制小数位数

保留小数位数 Math.round(x*100)/100 将浮点数四舍五入,取小数点后2位 可以实现保留两位小数 强制保留两位小数 function toDecimal2(x ) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x*100 )/100 ; var s = f.toString(); var rs = s.indexOf('.' ); if (rs < 0) { rs = s.l

c++中double类型控制小数位数

有时,我们需要输出确定小数位数的double,可以先引入如下头文件: #include <iomanip> 然后通过下列方式输出: double zzz = 8.66666; cout << fixed << setprecision(2) << zzz << endl; 或者: if ((aid % (int(allTime / deltaT) / files)) == 0) { cout << fixed << set

JS - 控制小数位数的方法(保留小数点后N位、以及小数取整)

开发中有时我们需要对小数进行取整,或者只保留 N 位小数进行显示.下面分别对这两种情况进行说明.这里假设我们有如下数字进行处理: var num = 5/3; console.log(num); 输出如下: 一.取整 1,直接取整(丢弃小数部分) 1 var num = parseInt(5/3);  // 1 2,四舍五入取整 1 var num = Math.round(5/3);  // 2 3,向上取整 1 var num = Math.ceil(5/3);  // 2 4,向下取整 1

【基础练习】【小数位数】小玉家的电费

题目来自 洛谷P1422 月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢.请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少. 题目很简单,但是做了才知道原来我不会写流输出控制小数位数= =果然书到用时方恨少事非经过不知难. 这里引用一份来自本站xidian13071185老

python中将字典转换成定义它的json字符串

Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'], 'sub_dic': { 'sub_str': 'this is sub str', 'sub_list': [1, 2, 3] }, 'end': 'end' } //这是javascript中的一个JSON对象 json_obj = { 'str': 'this is a string',

Python常用模块之json、pickle、random、hashlib、collections

1.json和pickle json用于字符串和Python数据类型间进行转换pickle用于python特有的类型和python的数据类型间进行转换json和pickle均提供了四种方法dumps,dump,loads,load ##json dumps() ##转换成字符串 loads() ##将json编码的字符串再转换为python的数据结构 dump() ##转换成字符串并存存储到文件中 load() ##从数据文件中读取数据,并将json编码的字符串转换为python的数据结构 >>

python 数据提取之JSON与JsonPATH

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后台之间的数据交互. JSON和XML的比较可谓不相上下. Python 2.7中自带了JSON模块,直接import json就可以使用了. 官方文档:http://docs.python.org/library/json.html Json在线解析网站:http://www.json.cn/#

python中将12345转换为&#39;12345&#39;,不要使用str

a = 12345#创建一个空字符串ret = ""#whlie循环,条件为当a为true时,即a不是 0的时候while a : #定义一个变量,对a求余 last = a%10 #关键一步,把数字变成字符赋值给ret ret = ret + chr(ord("0")+last) # a求余取整 a = a//10#打印retprint(ret) 当然啦,我们用for循环也可以做这道题,不过遗憾的时,会用到str a = 12345b=len(str(a))ret