2014-01-09 3 views
-1

С Django у меня есть переменная, которая содержит «48.6834» , это тип unicode.Преобразование юникода в поплавок

Я бы хотел преобразовать эту переменную в поплавок. Когда я делаю float(MyVar), я получаю 48.6. Проблема в том, что это широта, и я бы хотел сохранить точность. Я также пробовал unicodedata, но кажется невозможным, потому что это не один символ (нужен один символ Юникода в качестве параметра)

Знаете ли вы, как я могу получить свою оптимизированную varibale?

Мой код:

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 
+2

Что вы говорите? 'float' не обрезает это число до 48.6. – delnan

+0

, так что вы можете объяснить мне, почему мой результат неправильный? – billyJoe

+1

Что не так в результате? Вы ввели строку 48, и вы получили поплавок 48. – delnan

ответ

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

>>> from decimal import Decimal 
>>> Decimal(u"48.6834") 
Decimal('48.6834') 
+0

почему -1 голос? –

+1

В настоящее время в огне горит нисходящий поток: P Кстати, я думаю, что результат от 'float' может зависеть от архитектуры, в моем поле' float (u "48.6834") ' возвращает точно «48.6834'. –

+0

Это было на Windows, на Linux я получаю ваш результат. –

Смежные вопросы