Hmm. Apparently I have to set $div to xs:double. That still seems unnecessary 
and feels like a bug.

Cheers,

E.

----
Eliot Kimber

On 8/11/17, 10:45 AM, "[email protected] on behalf of 
Eliot Kimber" <[email protected] on behalf of 
[email protected]> wrote:

    (ML 8.0-3.2)
    
    In my xquery I’m doing this:
    
    let $total := xs:dayTimeDuration("PT6M38.33S")
    let $fastest-three := xs:dayTimeDuration("PT4M6.258784S")
    let $div := ($fastest-three div $total)
    
     return ($div)
    
    Which returns:
    
    0.6182280621595159793
    
    If I then try to multiple $div by 100 (to get a percent) I get decimal 
overflow:
    
    [1.0-ml] XDMP-DECOVRFLW: (err:FOAR0002) $div * 100 -- Decimal overflow
    
    Which is not at all expected.
    
    I also noticed that ML 8 does not appear to support the XQuery 3.x 
two-argument round() function, e.g., round($div, 2).
    
    Why am I getting a decimal overflow here?
    
    As a test I tried doing the same thing with Saxon 9.7 and XSLT 3:
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
      xmlns:xs="http://www.w3.org/2001/XMLSchema";
      exclude-result-prefixes="xs"
      version="3.1">
      <xsl:template match="/">
        <xsl:variable name="total" as="xs:dayTimeDuration" 
select='xs:dayTimeDuration("PT6M38.33S")'/>
        <xsl:variable name="fastest-three" as="xs:dayTimeDuration" 
select='xs:dayTimeDuration("PT4M6.258784S")'/>
        <xsl:variable name="div" as="xs:decimal"
          select="$fastest-three div $total"
          />
        <result>
          div: <xsl:value-of select="$div"/>
          $div * 100: <xsl:value-of select="$div * 100"/>
          round($div, 2) = <xsl:value-of select="round($div, 2)"/>
        </result>
      </xsl:template>
    </xsl:stylesheet>
    
    Which produces:
    
    <result>
          div: 0.61822806215951597921
          $div * 100: 61.822806215951597921
          round($div, 2) = 0.62</result>
    
    Thanks,
    
    Eliot
    --
    Eliot Kimber
    http://contrext.com
     
    
    
    
    _______________________________________________
    General mailing list
    [email protected]
    Manage your subscription at: 
    http://developer.marklogic.com/mailman/listinfo/general
    


_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to