[python] Konverze řetězce na float

Jan Fuchs fuky na seif.cz
Úterý Květen 11 10:53:42 CEST 2004


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

-- 

####################################################################
# Žádný program není bezchybný, dokonalý ani nejlepší, # Gnu.cz    #
# to samé platí i o lidech a nejen o nich.             # Linux.cz  #
#                                   -- Jan Fuchs --    # Debian.cz #
####################################################################
# http://www.asu.cas.cz                           ICQ: 200 692 177 #
####################################################################



Další informace o konferenci Python