[ 
https://issues.apache.org/jira/browse/DAFFODIL-2043?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Lawrence resolved DAFFODIL-2043.
--------------------------------------
    Resolution: Fixed

Fixed in commit a2f56a3f44d307a138fb7a4614f873120e186d63

> fn:round-half-to-even returns decimal string
> --------------------------------------------
>
>                 Key: DAFFODIL-2043
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2043
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Front End
>            Reporter: Brandon Sloane
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 2.3.0
>
>         Attachments: test.dfdl.xsd
>
>
> fn:round-half-to-even() appears to be returning a decimal string, which 
> causes issues when an integer type is expected.
> The following elements both trigger a schema definition error
> <xs:element name="a" type="xs:int"
>  dfdl:inputValueCalc="\{ (fn:round-half-to-even( 0.1 )) }"
>  />
> <xs:element name="a" type="xs:int"
>  dfdl:inputValueCalc="\{ xs:int(fn:round-half-to-even( 0.1 )) }"
>  />
> [error] Schema Definition Error: Cannot convert '0.0' from String type to 
> Long (Cannot convert to type long: For input string: "0.0").
> In contrast, casting to a double, as below, appears to work as expected:
> <xs:element name="a" type="xs:int"
>  dfdl:inputValueCalc="\{ xs:double(fn:round-half-to-even( 0.1 )) }"
>  />
>  
> What appears to be happening is that fn:round-half-to-even( 0.1 ) returns the 
> string "0.0", and the type="xs:int" on the element triggers an implicit cast 
> to an integer type. Since "0.0" contains a decimal point, this cast fail. 
> However, an explict cast to xs:double can succeed, and then the explicit cast 
> to an int from the double works as expected.
> Complete example schema attached



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to