在Python Decimal中使用Number Float格式

时间:2013-05-31 06:21:03

标签: python dictionary floating-point decimal typeerror

我正在编写一个代码,然后我以下列形式获取数据:

k=[{'item_id': '43381702', 'length': {'_exp': -2, '_is_special': False, '_int': '0', '_sign': 0}, 'height': {'_exp': -2, '_is_special': False, '_int': '0', '_sign': 0}, 'width': {'_exp': -2, '_is_special': False, '_int': '0', '_sign': 0}, 'unitweight': {'_exp': -3, '_is_special': False, '_int': '3000', '_sign': 0}, 'quantity': 1}]

当我写

时,预计会这样
float(k[0]['unitweight'])

应将其转换为浮点数。但它正在给予

TypeError: float() argument must be a string or a number

正如所料。我很困惑,因为数据与python十进制模块中实现的格式相同。有什么方法(单行)我可以用它来转换数据吗?

这个link可能有同样的问题。还可以查看this

1 个答案:

答案 0 :(得分:2)

考虑到这一点:

d = {'_exp': -3, '_is_special': False, '_int': '3000', '_sign': 0}

有:

k[0]['unitweight']

你可以这样做:

import math  
math.copysign(int(d['_int']) ** d['_exp'], d['_sign'] * -1)

结果:

3.7037037037037036e-11

不知道'_is_special'的含义。