You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2012/08/03 04:09:55 UTC
svn commit: r1368766 - in
/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery:
datamodel/accessors/atomic/XSDecimalPointable.java
runtime/functions/cast/CastToIntegerOperation.java
Author: prestonc
Date: Fri Aug 3 02:09:55 2012
New Revision: 1368766
URL: http://svn.apache.org/viewvc?rev=1368766&view=rev
Log:
Fixed an issue with rounding when getting the number before the decimal.
Modified:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java?rev=1368766&r1=1368765&r2=1368766&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/atomic/XSDecimalPointable.java Fri Aug 3 02:09:55 2012
@@ -13,7 +13,7 @@ import edu.uci.ics.hyracks.data.std.prim
public class XSDecimalPointable extends AbstractPointable implements IHashable, IComparable, INumeric {
private final static int DECIMAL_PLACE_OFFSET = 0;
private final static int VALUE_OFFSET = 1;
- public final static int PRECISION = 18;
+ public final static int PRECISION = 15;
public static final ITypeTraits TYPE_TRAITS = new ITypeTraits() {
private static final long serialVersionUID = 1L;
@@ -142,12 +142,20 @@ public class XSDecimalPointable extends
return (int) (v ^ (v >>> 32));
}
+ public long getBeforeDecimalPlaceRounded() {
+ return getBeforeDecimalPlaceRounded(bytes, start);
+ }
+
+ public static long getBeforeDecimalPlaceRounded(byte[] bytes, int start) {
+ return Math.round(getDecimalValue(bytes, start) / Math.pow(10, getDecimalPlace(bytes, start)));
+ }
+
public long getBeforeDecimalPlace() {
return getBeforeDecimalPlace(bytes, start);
}
public static long getBeforeDecimalPlace(byte[] bytes, int start) {
- return Math.round(getDecimalValue(bytes, start) / Math.pow(10, getDecimalPlace(bytes, start)));
+ return (long) (getDecimalValue(bytes, start) / Math.pow(10, getDecimalPlace(bytes, start)));
}
public byte getDigitCount() {
@@ -175,7 +183,7 @@ public class XSDecimalPointable extends
@Override
public long longValue() {
- return getBeforeDecimalPlace();
+ return getBeforeDecimalPlaceRounded();
}
@Override
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java?rev=1368766&r1=1368765&r2=1368766&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java Fri Aug 3 02:09:55 2012
@@ -27,7 +27,7 @@ public class CastToIntegerOperation exte
@Override
public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
dOut.write(ValueTag.XS_INTEGER_TAG);
- dOut.writeLong(decp.longValue());
+ dOut.writeLong(decp.getBeforeDecimalPlace());
}
@Override
@@ -81,7 +81,6 @@ public class CastToIntegerOperation exte
if (negative) {
value *= -1;
}
- System.err.println(" int value = " + value);
dOut.write(ValueTag.XS_INTEGER_TAG);
dOut.writeLong(value);