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) ;
}