将unicode转换为float

时间:2014-01-09 20:25:47

标签: python casting

使用Django,我有一个包含“48.6834”的变量 它的类型是unicode。

我想在float中转换这个变量。当我float(MyVar)时,我获得了48.6。 问题是它是一个纬度,我想保持精度。 我也试过unicodedata,但似乎不可能,因为它不是一个字符(需要一个Unicode字符作为参数)

你知道我怎样才能得到精确的变种?

我的代码:

print  type(request.POST['lat'])
print request.POST['lat']

lat = float(request.POST['lat'])

print  type(lat)
print lat

控制台结果:

<type 'unicode'>
48
<type 'float'>
48.0

1 个答案:

答案 0 :(得分:1)

你得不到48.6 ......你得到一个漂浮物

>>> float(u"48.6834")
48.683399999999999

你可以用格式字符串来表示你喜欢的方式

>>> "%0.4f"%float(u"48.6834")  #0 padded float with 4 decimal places 
'48.6834'

如果您非常担心floating point errors

,您可能正在寻找Decimal模块
>>> from decimal import Decimal
>>> Decimal(u"48.6834")
Decimal('48.6834')