Hello,

In a previous email, I asked about ImportSpreadsheet's
tendency to munge large integers. E.g., 96933478 becomes
96933480. (http://opendx.npaci.edu/mail/opendx-users/2003.06/msg00046.html)

I have traced this to line 1337 of import_ss.c, in the function
_dxf_isnumber(). The data
value has just been parsed as a float. Then, if no decimal
point is found, the float is converted to an int:
                *d = (int)f;
But it's too late because there's not enough precision in
the float to represent large ints. Re-parsing the input as an
integer fixes it:
                sscanf(p+(*p=='$'), "%d", d);
                
I have verified this on my local installation.

Cheers,
Joel

===============================================================
Joel Richardson, Ph.D.          [EMAIL PROTECTED]
The Jackson Laboratory          Phone:  (207) 288-6435
600 Main Street                 Fax:    (207) 288-6132
Bar Harbor, Maine 04609         URL:    www.informatics.jax.org
===============================================================

Reply via email to