Billy Mays wrote: > On 07/21/2011 08:46 AM, Web Dreamer wrote: >> If you do not want to use 'float()' try: >> >> int(x.split('.')[0]) > > This is right.
Assuming that the value of `x' is in the proper format, of course. Else you might easily cut to the first one to three digits of a string representation (if `.' is the thousands separator of the locale, e. g.) >> But, the problem is the same as with int(float(x)), the integer number is >> still not as close as possible as the original float value. >> >> I would in fact consider doing this: >> >> int(round(float(x))) > > This is wrong, since there is a loss of information in the float cast: > > >>> float('9007199254740993.0') > 9007199254740992.0 > > Notice the last digit switched from a 3 to a 2? Floats in python don't > have arbitrary accuracy. You would need to import decimal and use it > for rounding to work properly. It should be floor() though, for that is what int() does. -- PointedEars Bitte keine Kopien per E-Mail. / Please do not Cc: me. -- http://mail.python.org/mailman/listinfo/python-list