fraction-math-js
Advanced tools
+2
-2
| #!/usr/bin/env node --harmony --harmony_array_includes | ||
| "use strict" | ||
| let readline = require('readline'); | ||
| let Frac=require("../"); | ||
| let Frac=require("../").builder; | ||
| let rl = readline.createInterface({ | ||
@@ -14,3 +14,3 @@ input: process.stdin, | ||
| rl.on('line', function (e) { | ||
| console.log(e," = ",new Frac(e).toString()); | ||
| console.log(e," = ",Frac(e).toString()); | ||
| rl.prompt(); | ||
@@ -17,0 +17,0 @@ }).on('close', function() { |
| #!/usr/bin/env node --harmony --harmony_array_includes | ||
| "use strict" | ||
| let F = require("../"); | ||
| let x=new F("1+2/3*5"); | ||
| let y=new F("1+",x); | ||
| let z=new F("+",1,y); | ||
| let a=new F(y,z,"+"); | ||
| let F = require("../").builder; | ||
| let x=F("1+2/3*5"); | ||
| let y=F("1+",x); | ||
| let z=F("+",1,y); | ||
| let a=F(y,z,"+"); | ||
| console.log(a.toString());//35/3 | ||
| console.log(a.n.toString());//35 | ||
| console.log(a.d.toString());//3 | ||
| let b=new F(a,"+",1.1); | ||
| let b=F(a,"+",1.1); | ||
| console.log(b.toString());//383/30 |
+18
-12
@@ -104,12 +104,12 @@ "use strict" | ||
| } | ||
| this.n=value[0];//numerator | ||
| this.d=value[1];//denominator | ||
| Object.defineProperties(this,{ | ||
| "n":{ | ||
| "writable":false | ||
| }, | ||
| "d":{ | ||
| "writable":false | ||
| } | ||
| }); | ||
| this.n=value[0];//numerator | ||
| this.d=value[1];//denominator | ||
| Object.defineProperties(this,{ | ||
| "n":{ | ||
| "writable":false | ||
| }, | ||
| "d":{ | ||
| "writable":false | ||
| } | ||
| }); | ||
| //define closure function for read the value; | ||
@@ -123,6 +123,6 @@ } | ||
| toJSON(){ | ||
| return this.toString(); | ||
| return this.toString(); | ||
| } | ||
| toBigNumber(){ | ||
| return this.n.dividedBy(this.d); | ||
| return this.n.dividedBy(this.d); | ||
| } | ||
@@ -166,7 +166,13 @@ plus(y){ | ||
| } | ||
| isNegative(){ | ||
| return this.n.isNegative(); | ||
| } | ||
| get value(){ | ||
| return [this.n,this.d];//get value | ||
| } | ||
| static builder(...args){ | ||
| return new F(...args); | ||
| } | ||
| } | ||
| module.exports=F; | ||
| //node --harmony --harmony_array_includes |
+1
-1
| { | ||
| "name": "fraction-math-js", | ||
| "version": "0.1.8", | ||
| "version": "0.1.9", | ||
| "description": "", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
+6
-7
@@ -28,12 +28,12 @@ ## fraction-math-js | ||
| let F = require('fraction-math-js'); | ||
| let F = require('fraction-math-js').builder; | ||
| ### Use | ||
| let x=new F("1+2/3*5");//1+2/3*5 = 13/3 | ||
| let x=F("1+2/3*5");//1+2/3*5 = 13/3 | ||
| let y=new F("1+",x);//1+x = 16/3 | ||
| let y=F("1+",x);//1+x = 16/3 | ||
| let z=new F("+",1,y);//1+y = 19/3 | ||
| let z=F("+",1,y);//1+y = 19/3 | ||
| let a=new F(y,z,"+");//y+z = 35/3 | ||
| let a=F(y,z,"+");//y+z = 35/3 | ||
@@ -46,3 +46,3 @@ console.log(a.toString());//35/3 | ||
| let b=new F(a,"+",1.1);//a+1.1 = 383/30 | ||
| let b=F(a,"+",1.1);//a+1.1 = 383/30 | ||
@@ -55,2 +55,1 @@ console.log(b.toString());//383/30 | ||
| > node --harmony --harmony_array_includes sample.js | ||
+18
-17
| "use strict" | ||
| let Frac=require("../") | ||
| let Frac=require("../").builder; | ||
| let assert=require('assert'); | ||
| assert.ok((new Frac("-1 + ( 2 + 3 ) * 5").toString())==="24","-1 + ( 2 + 3 ) * 5 = 24");//Infix -1+(2+3)*5=-1+5*5=-1+25=24 | ||
| assert.ok(new Frac("1 / 2").toString()==="1/2","1 / 2 = 1/2");//Infix 1/2=(1/2) | ||
| assert.ok(new Frac("-1.1 + 1.1").toString()==="0","-1.1 + 1.1 = 0");//decimal -1.1+1.1=0 | ||
| assert.ok(new Frac("1.1","1.1").toString()==="1","1.1 , 1.1 = 1");//decimal 1.1/1.1=1 | ||
| assert.ok(new Frac("2",-6).toString()==="-1/3","2 , -6 = -1/3");//decimal 2,-6 = -1/3 | ||
| assert.ok(new Frac("1 1 1 + +").toString()==="3","1 1 1 + + = 3");//Postfix 1 1 1 + + = 1 2 + = 3 | ||
| assert.ok(new Frac("- * 3 2 1").toString()==="5","- * 3 2 1 = 5");//Prefix - * 3 2 1 = - 6 1 = 5 | ||
| assert.ok(new Frac("1 / 0").toString()==="NaN","1 / 0 = NaN");// 1/0=NaN | ||
| assert.ok(new Frac("ABC").toString()==="NaN","ABC = NaN");// ABC=NaN | ||
| assert.ok(new Frac("-","*",new Frac(3),new Frac("2"),"1").toString()==="5"," - , * , frac(3) , Frac(\"2\") , 1 = 5");//Prefix - * 3 2 1 = - 6 1 = 5 | ||
| assert.ok(new Frac("0 * ( -2 ) - ( 2 / 3 ) + 3").toString()==="7/3","0 * ( -2 ) - ( 2 / 3 ) + 3 = 7/3"); | ||
| assert.ok(new Frac("0*(-2)-(2/3)+3").toString()==="7/3","0*(-2)-(2/3)+3 = 7/3"); | ||
| assert.ok(new Frac("-1+-2-2").toString()==="-5","-1+-2-2=-5"); | ||
| assert.ok(new Frac("-1","+","-2-2").toString()==="-5","-1,+,-2-2=-5");//-1+-2-2=-5 | ||
| let x=new Frac("123"); | ||
| assert.ok((Frac("-1 + ( 2 + 3 ) * 5").toString())==="24","-1 + ( 2 + 3 ) * 5 = 24");//Infix -1+(2+3)*5=-1+5*5=-1+25=24 | ||
| assert.ok(Frac("1 / 2").toString()==="1/2","1 / 2 = 1/2");//Infix 1/2=(1/2) | ||
| assert.ok(Frac("-1.1 + 1.1").toString()==="0","-1.1 + 1.1 = 0");//decimal -1.1+1.1=0 | ||
| assert.ok(Frac("1.1","1.1").toString()==="1","1.1 , 1.1 = 1");//decimal 1.1/1.1=1 | ||
| assert.ok(Frac("2",-6).toString()==="-1/3","2 , -6 = -1/3");//decimal 2,-6 = -1/3 | ||
| assert.ok(Frac("1 1 1 + +").toString()==="3","1 1 1 + + = 3");//Postfix 1 1 1 + + = 1 2 + = 3 | ||
| assert.ok(Frac("- * 3 2 1").toString()==="5","- * 3 2 1 = 5");//Prefix - * 3 2 1 = - 6 1 = 5 | ||
| assert.ok(Frac("1 / 0").toString()==="NaN","1 / 0 = NaN");// 1/0=NaN | ||
| assert.ok(Frac("ABC").toString()==="NaN","ABC = NaN");// ABC=NaN | ||
| assert.ok(Frac("-","*",Frac(3),Frac("2"),"1").toString()==="5"," - , * , frac(3) , Frac(\"2\") , 1 = 5");//Prefix - * 3 2 1 = - 6 1 = 5 | ||
| assert.ok(Frac("0 * ( -2 ) - ( 2 / 3 ) + 3").toString()==="7/3","0 * ( -2 ) - ( 2 / 3 ) + 3 = 7/3"); | ||
| assert.ok(Frac("0*(-2)-(2/3)+3").toString()==="7/3","0*(-2)-(2/3)+3 = 7/3"); | ||
| assert.ok(Frac("-1+-2-2").toString()==="-5","-1+-2-2=-5"); | ||
| assert.ok(Frac("-1","+","-2-2").toString()==="-5","-1,+,-2-2=-5");//-1+-2-2=-5 | ||
| let x=Frac("123"); | ||
| let m=x.value; | ||
| m[0]=555; | ||
| assert.ok(x.toString()==="123","not constant"); | ||
| assert.ok(new Frac("0.99999999999999999999999999999999999999999999999999999999999999999999999999999999").toString()==="99999999999999999999999999999999999999999999999999999999999999999999999999999999/100000000000000000000000000000000000000000000000000000000000000000000000000000000","0.99999999999999999999999999999999999999999999999999999999999999999999999999999999 = 99999999999999999999999999999999999999999999999999999999999999999999999999999999/100000000000000000000000000000000000000000000000000000000000000000000000000000000"); | ||
| assert.ok(Frac("0.99999999999999999999999999999999999999999999999999999999999999999999999999999999").toString()==="99999999999999999999999999999999999999999999999999999999999999999999999999999999/100000000000000000000000000000000000000000000000000000000000000000000000000000000","0.99999999999999999999999999999999999999999999999999999999999999999999999999999999 = 99999999999999999999999999999999999999999999999999999999999999999999999999999999/100000000000000000000000000000000000000000000000000000000000000000000000000000000"); | ||
| assert.ok(Frac("-1").isNegative()===true,"isNegative"); |
21576
0.58%228
4.11%53
-1.85%