John Wagenleitner created GROOVY-7665:
-----------------------------------------

             Summary: JsonSlurperCharSource decimal parsing producing 
unexpected results
                 Key: GROOVY-7665
                 URL: https://issues.apache.org/jira/browse/GROOVY-7665
             Project: Groovy
          Issue Type: Bug
          Components: JSON
    Affects Versions: 2.4.5
            Reporter: John Wagenleitner
            Priority: Minor


When using the JsonParserType.CHARACTER_SOURCE decimal numbers are first parsed 
to double value and that value is used to construct the BigDecimal to return.  
This can produce some unexpected results.

For example:

{code}
​import groovy.json.*

def parser = new JsonSlurper().setType(JsonParserType.CHARACTER_SOURCE)
def json = parser.parseText('{"num": 123.40}')

assert json.num instanceof BigDecimal
assert 123.40G == json.num​
{code}

Fails with:

{code}
Assertion failed: 

assert 123.40G == json.num
               |  |    |
               |  |    123.400000000000005684341886080801486968994140625
               |  [num:123.400000000000005684341886080801486968994140625]
               false

        at Script1.run(Script1.groovy:8)
{code}



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

Reply via email to