Made numeric range index handle value.log() properly when value is 0 or negative.

git-svn-id: http://google-refine.googlecode.com/svn/trunk@436 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
David Huynh 2010-04-09 05:24:46 +00:00
parent a0d8c385f9
commit dff870519e
3 changed files with 16 additions and 8 deletions

View File

@ -71,13 +71,16 @@ public class ExpressionNumericRowBinner implements RowVisitor {
errorCount++; errorCount++;
} else if (ExpressionUtils.isNonBlankData(value)) { } else if (ExpressionUtils.isNonBlankData(value)) {
if (value instanceof Number) { if (value instanceof Number) {
numericCount++;
double d = ((Number) value).doubleValue(); double d = ((Number) value).doubleValue();
if (!Double.isInfinite(d) && !Double.isNaN(d)) {
int bin = (int) Math.floor((d - _index.getMin()) / _index.getStep()); numericCount++;
bins[bin]++; int bin = (int) Math.floor((d - _index.getMin()) / _index.getStep());
bins[bin]++;
} else {
errorCount++;
}
} else { } else {
nonNumericCount++; nonNumericCount++;
} }

View File

@ -122,7 +122,7 @@ public class NumericBinIndex {
} }
protected void processValue(double v, List<Double> allValues) { protected void processValue(double v, List<Double> allValues) {
if (!Double.isInfinite(v)) { if (!Double.isInfinite(v) && !Double.isNaN(v)) {
_min = Math.min(_min, v); _min = Math.min(_min, v);
_max = Math.max(_max, v); _max = Math.max(_max, v);
allValues.add(v); allValues.add(v);

View File

@ -76,7 +76,12 @@ abstract public class ExpressionNumberComparisonRowFilter implements RowFilter {
return _selectError; return _selectError;
} else if (ExpressionUtils.isNonBlankData(v)) { } else if (ExpressionUtils.isNonBlankData(v)) {
if (v instanceof Number) { if (v instanceof Number) {
return _selectNumeric && checkValue(((Number) v).doubleValue()); double d = ((Number) v).doubleValue();
if (Double.isInfinite(d) || Double.isNaN(d)) {
return _selectError;
} else {
return _selectNumeric && checkValue(d);
}
} else { } else {
return _selectNonNumeric; return _selectNonNumeric;
} }