[python] Konverze řetězce na float

Jaroslav Pachola j_p_misc na centrum.cz
Úterý Květen 11 11:05:45 CEST 2004


Ahoj,



Dne út 11. května 2004 10:53 Jan Fuchs napsal(a):
> Ahoj,
> můžu nějakým způsobem docílit správného převedení řetězce např. "12.2"
> na číslo float 12.2? Zkoušel jsem to dvěmi následujícími způsoby, ale
> ani jeden nefunguje dle mých představ. Lépe řečeno, oba narazí na problém
> ve stejném místě a JÁ nevím jak to obejít.
>
> >>> import string
> >>> import modul
> >>>
> >>> cislo = string.atof("12.2")
> >>> cislo
>
> 12.199999999999999
>
> >>> round(cislo, 2)
>
> 12.199999999999999
>
> >>> modul.string2float("12.2")
>
> řetězec: 12.2, číslo = 12.200000
> 12.199999999999999
>
> PyObject* string2float(PyObject* self, PyObject* args)
> {
>   char *s;
>
>   if(!PyArg_ParseTuple(args, "s", &s)) return NULL;
>
>   printf("řetězec: %s, číslo = %f\n", s, atof(s));
>
>   return Py_BuildValue("f", atof(s));
> }
>
> Dík za případné odpovědi.
>
>      S pozdravem Fuky

to neni problem prevodu, ale reprezentace cisel s plovouci radovou carkou v 
pocitaci a nasledneho vypisu v interaktivnim interpreteru. Resi se to na 
comp.lang.python zhruba jednou mesicne a mam pocit, ze situace speje k tomu, 
ze se budou vypisovat zaokrouhlena cisla ala str().

>>> str(12.2)
'12.2'
>>> repr(12.2)
'12.199999999999999'

JP

-- 
>pyobfuscate is a source code obfuscator: It makes Python source code
>hard to read for humans, while still being executable for the Python
>interpreter. 

Of course, this facility comes as standard with Perl.
(From Python mailing list)



Další informace o konferenci Python