diff --git a/src/main/java/com/metaweb/gridworks/expr/functions/ToNumber.java b/src/main/java/com/metaweb/gridworks/expr/functions/ToNumber.java index 94d65dbd7..107dfeaa8 100644 --- a/src/main/java/com/metaweb/gridworks/expr/functions/ToNumber.java +++ b/src/main/java/com/metaweb/gridworks/expr/functions/ToNumber.java @@ -5,13 +5,23 @@ import java.util.Properties; import org.json.JSONException; import org.json.JSONWriter; +import com.metaweb.gridworks.expr.EvalError; import com.metaweb.gridworks.gel.Function; public class ToNumber implements Function { public Object call(Properties bindings, Object[] args) { if (args.length == 1 && args[0] != null) { - return args[0] instanceof Number ? args[0] : Double.parseDouble(args[0].toString()); + if (args[0] instanceof Number) { + return args[0]; + } else { + String s = args[0].toString(); + try { + return Double.parseDouble(s); + } catch (NumberFormatException e) { + return new EvalError("Cannot parse to number"); + } + } } return null; } diff --git a/src/main/java/com/metaweb/gridworks/importers/ImporterUtilities.java b/src/main/java/com/metaweb/gridworks/importers/ImporterUtilities.java index 31649182a..867d14aac 100644 --- a/src/main/java/com/metaweb/gridworks/importers/ImporterUtilities.java +++ b/src/main/java/com/metaweb/gridworks/importers/ImporterUtilities.java @@ -16,7 +16,10 @@ public class ImporterUtilities { } try { - return Double.parseDouble(text); + double d = Double.parseDouble(text); + if (!Double.isInfinite(d) && !Double.isNaN(d)) { + return d; + } } catch (NumberFormatException e) { } }