On 02/06/14 18:21, David North wrote:
> On 02/06/14 17:01, Nick Burch wrote:
>>>>> No matter how I format it, the UI refuses to acknowledge or display
>>>>> the
>>>>> .000000000007 in the underlying file.
>>>> What about if you set a format string of something like
>>>> 0.000000000000000 ? (I suspect the 62408 displayed is due to a format
>>>> string of 0 or General)
>>> Setting that format string results in 62408.000000000000000 - adding
>>> more zeroes to the format string just adds more zeroes to the displayed
>>> number, with no sign of any non-zero digits after the decimal point.
>> Hmm, interesting
>>
>>>> Also, if you save the file as a .xls, does that change how both POI
>>>> and Excel see it? (.xlsx and .xls use different ways of serialising
>>>> numeric values to disk)
>>> No, Excel 2010/2013 and POI both behave the same when the example is
>>> converted to .xls - including DataFormatter giving "62408".
>>>
>>> I think I'll have to resort to reading the office formats spec to try
>>> and find the official word on how applications are supposed to deal with
>>> reading values outside the range of double-precision floating point...
>> FWIW, the relevent code in XSSFCell is simply:
>>
>>                       return Double.parseDouble(_cell.getV());
>>
>> So we're relying on the default Java behaviour
> Indeed, which does not seem unreasonable as Java's behaviour is closely
> related to IEEE 754, which is also what Excel claims to use.
>
> I've posted here to see if someone from Microsoft can give me a
> definitive answer:
>
> http://openxmldeveloper.org/discussions/formats/f/14/p/7774/163115.aspx
>
> Wading through the Office Open XML Specifications has failed to throw up
> a definitive reference on number parsing.
>

http://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%201st%20edition%20Part%204%20(PDF).zip

Section 3.17.5.2 on page 2531:

"[The value space of numbers in SpreadsheetML] is patterned after the
IEEE double-precision 64-bit floating-point type"

So it looks like POI is right and Excel is wrong. LibreOffice is
consistent with Excel, so I'll try and find out the justification for that.

David

-- 
David North, Technical Lead, CoreFiling Limited
http://www.corefiling.com
Phone: +44-1865-203192


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org

Reply via email to