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

Reply via email to