[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