[ 
https://issues.apache.org/jira/browse/THRIFT-3433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15022792#comment-15022792
 ] 

Tom Lippincott commented on THRIFT-3433:
----------------------------------------

It looks like when building a compact double, Haskell uses doubleBE, and when 
parsing one, it uses bsToDouble, which assumes big endian input, and checks the 
local machine's ordering for whether it needs to swap it to little endian (see 
the def of bsToDouble in Protocol.hs).  It says big endian is "network order", 
which I guess Thrift...doesn't use?  I think the fix is pretty straightforward 
in either case, but I'd rather someone more familiar and capable of verifying 
all of this do it...

> Doubles aren't interpreted correctly
> ------------------------------------
>
>                 Key: THRIFT-3433
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3433
>             Project: Thrift
>          Issue Type: Bug
>          Components: Haskell - Library
>    Affects Versions: 0.9.3
>            Reporter: Tom Lippincott
>
> When reading in a string-to-double map from the identical file using the 
> Compact protocol, Python gives the correct values:
> ...
> u'roh': -12.012431158160835
> ...
> but Haskell is totally off:
> ...
> ("roh",6.355136015066463e-157)
> ...
> The funny thing is, if I read it into Haskell (and the numbers are all off), 
> then write it out to another file, that file still has correct numbers when 
> loaded into Python.  So it seems that the raw information is being 
> (de)serialized correctly at the bit-level, but Haskell isn't interpreting it 
> as a double the same way as Python...



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to