Revision: 4333 http://vexi.svn.sourceforge.net/vexi/?rev=4333&view=rev Author: mkpg2 Date: 2012-01-19 00:56:16 +0000 (Thu, 19 Jan 2012) Log Message: ----------- Fix. Do not convert to double (and lose precision) when parsing string to rational.
Modified Paths: -------------- trunk/org.vexi-library.js/src/main/java/org/ibex/js/JSNumber.java trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java trunk/org.vexi-library.js/src/test/java/test/js/exec/number/rationalMaths.js Modified: trunk/org.vexi-library.js/src/main/java/org/ibex/js/JSNumber.java =================================================================== --- trunk/org.vexi-library.js/src/main/java/org/ibex/js/JSNumber.java 2012-01-19 00:39:15 UTC (rev 4332) +++ trunk/org.vexi-library.js/src/main/java/org/ibex/js/JSNumber.java 2012-01-19 00:56:16 UTC (rev 4333) @@ -43,9 +43,14 @@ throw new JSExn("Not a valid number format: "+JSU.toString(format)); } - static private JSNumber tryParseString(String s){ + static private JSNumber tryParseString(String s, int formatConst){ try{ - Number n = Lexer.parseNumber(s, true); + Number n = null; + if(formatConst==N_RATIONAL){ + n = Rational.tryParse(s); + }else{ + n = Lexer.parseNumber(s, true); + } return JSU.N(n); }catch(IOException e){ return null; @@ -58,7 +63,7 @@ JSNumber n; if(!(o instanceof JSNumber)){ String s = JSU.toString(o); - n = tryParseString(s); + n = tryParseString(s, formatConst); if(n==null) throw new JSExn("Cannot cast to string: "+s); }else{ n = (JSNumber)o; @@ -86,7 +91,7 @@ JS arg = args[0]; if("tryParseString".equals(methodStr)) { String s = JSU.toString(arg); - return tryParseString(s); + return tryParseString(s, -1); }else if("cast".equals(methodStr)) { JS format = null; if(args.length>=2) format = args[1]; Modified: trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java =================================================================== --- trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java 2012-01-19 00:39:15 UTC (rev 4332) +++ trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java 2012-01-19 00:56:16 UTC (rev 4333) @@ -214,6 +214,8 @@ return METHOD; if("sys".equals(key)) return sys; + if("trace".equals(key)) + return sys.get(arg); if("export".equals(key)) return export; if(imports.containsKey(arg)) Modified: trunk/org.vexi-library.js/src/test/java/test/js/exec/number/rationalMaths.js =================================================================== --- trunk/org.vexi-library.js/src/test/java/test/js/exec/number/rationalMaths.js 2012-01-19 00:39:15 UTC (rev 4332) +++ trunk/org.vexi-library.js/src/test/java/test/js/exec/number/rationalMaths.js 2012-01-19 00:56:16 UTC (rev 4333) @@ -1,8 +1,12 @@ sys.import("lib"); sys.import("shared"); -assertEquals(300, sys.js.Number.tryParseString("300r")); -assertEquals(-123.123r, sys.js.Number.tryParseString("-123.123r")); +const Number = sys.js.Number; + +assertEquals("0.02",""+Number.cast("0.02","rational")); + +assertEquals(300, Number.tryParseString("300r")); +assertEquals(-123.123r, Number.tryParseString("-123.123r")); assertEquals(300r.toDecimalString(3), "300.000"); //assertEquals(0, 10.0%0.001); //assertEquals(0.05, 1.3%0.25); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn