On Jan 10, 12:30 am, "Gacha" <[EMAIL PROTECTED]> wrote: > I use pyExcelerator to import some data from xml file. One column > contains integer values like: > 4750456000708 > 4750456000715 > 4750456000333
I think you must mean "xls", not "xml". Those are integers only in the mathematical sense. The value of each number cell in an XLS file is treated as a 64-bit floating point number. How do you know that they are whole numbers? What you see on-screen with Excel etc is not necessarily what you've got. If you format your column with 0 decimal places, 4750456000708.123 will show as 4750456000708 However, whether they are whole numbers or not, you still have a problem on the Python side: > ... > But when I do import the pyExcelerator converts them to something like > this: > 4.7504560002e+12 > 4.7504560007e+12 > 4.7504560007e+12 > 4.7504560003e+12 No it doesn't. It converts the XLS file data to Python float type -- 64-bit floating point numbers. There is no loss of precision. What you are seeing are different visual presentations of the *same* object. Perhaps this will explain: | >>> for x in (4750456000708.0, 4750456000708.123): | ... print x, str(x), repr(x) | ... | 4.75045600071e+012 4.75045600071e+012 4750456000708.0 | 4.75045600071e+012 4.75045600071e+012 4750456000708.123 | >>> > > How I understand it's because the integer value is too big. A 12-digit integer is too big for what? > If the type > of the items was string, then all would be fine, but I can't control > the file content. > > The question is, how can I import the integers in normal format. The answer is, there is no such thing as "normal format". Normality, like beauty, is in the eye of the beholder. You have a value, how you format it for display depends on your purpose. If what you want is to see the most precise representation of what you've got, then use repr(). HTH, John -- http://mail.python.org/mailman/listinfo/python-list