You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/05/07 18:52:47 UTC

svn commit: r1335120 - in /jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue: NodeValueDouble.java XSDFuncOp.java

Author: andy
Date: Mon May  7 16:52:46 2012
New Revision: 1335120

URL: http://svn.apache.org/viewvc?rev=1335120&view=rev
Log:
Allow doubles to convert to decimals.
Format decimals to have ".0" for integer values.

Modified:
    jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDouble.java
    jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java

Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDouble.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDouble.java?rev=1335120&r1=1335119&r2=1335120&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDouble.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueDouble.java Mon May  7 16:52:46 2012
@@ -20,6 +20,8 @@ package com.hp.hpl.jena.sparql.expr.node
 
 //import java.math.BigDecimal;
 
+import java.math.BigDecimal ;
+
 import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.sparql.expr.NodeValue ;
@@ -43,6 +45,9 @@ public class NodeValueDouble extends Nod
     public double getDouble()  { return value ; }
 
     @Override
+    public BigDecimal getDecimal()  { return BigDecimal.valueOf(value) ; }
+
+    @Override
     protected Node makeNode()
     { return Node.createLiteral(Utils.stringForm(value), null, XSDDatatype.XSDdouble) ; }
     

Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1335120&r1=1335119&r2=1335120&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Mon May  7 16:52:46 2012
@@ -160,10 +160,6 @@ public class XSDFuncOp
     //private static BigDecimal decimalDivide(BigDecimal d1, BigDecimal d2)
     private static NodeValue decimalDivide(BigDecimal d1, BigDecimal d2)
     {
-        // Java 1.5-ism BigDecimal.divide(BigDecimal) -- but fails for 1/3 anyway.
-        // return d1.divide(d2) ;
-        // The one downside here is that the precision is always extended 
-        // even when unnecessary.
         try {
             BigDecimal d3 = d1.divide(d2, DIVIDE_PRECISION, BigDecimal.ROUND_FLOOR) ; 
             return messAroundWithBigDecimalFormat(d3) ;
@@ -188,14 +184,15 @@ public class XSDFuncOp
         // Has a DOT.
         
         int i = x.length()-1;
-        while ( i > dotIdx && x.charAt(i) == '0' )
+        // i+1 at least leave ".0" 
+        while ( i+1 > dotIdx && x.charAt(i) == '0' )
             i -- ;
         if ( i < x.length()-1)
             // And trailing zeros.
             x = x.substring(0, i+1) ;   
 
         // Avoid as expensive.
-        //x = x.replaceAll("0*$", "") ;
+        //x = x.replaceAll("0+$", "") ;
         return NodeValue.makeNode(x, XSDDatatype.XSDdecimal) ;
     }