fraction.js
Advanced tools
Comparing version 1.2.1 to 1.3.0
{ | ||
"name": "fraction.js", | ||
"main": "fraction.js", | ||
"version": "1.2.1", | ||
"version": "1.3.0", | ||
"homepage": "http://www.xarg.org/2014/03/precise-calculations-in-javascript/", | ||
@@ -6,0 +6,0 @@ "description": "A rational number library", |
/** | ||
* @license Fraction.js v1.2.1 20/04/2014 | ||
* @license Fraction.js v1.3.0 29/06/2014 | ||
* http://www.xarg.org/2014/03/precise-calculations-in-javascript/ | ||
@@ -213,5 +213,5 @@ * | ||
* | ||
* Ex: new Fraction("100.'91823'").toDouble() => 100.91823918239183 | ||
* Ex: new Fraction("100.'91823'").toNumber() => 100.91823918239183 | ||
**/ | ||
self['toDouble'] = function() { | ||
self['toNumber'] = function() { | ||
@@ -218,0 +218,0 @@ return self['s'] * self['n'] / self['d']; |
/* | ||
Fraction.js v1.2.1 20/04/2014 | ||
Fraction.js v1.3.0 29/06/2014 | ||
http://www.xarg.org/2014/03/precise-calculations-in-javascript/ | ||
@@ -12,3 +12,3 @@ | ||
p.d=Math.abs(c);p.s=(0<=d)-(0>d);return p}var p={n:0,d:0,s:0},a=this;a.abs=function(){a.s=1;return a};a.add=function(b){b=l(arguments);return k(a.s*a.n*b.d+b.s*a.d*b.n,a.d*b.d)};a.sub=function(b){b=l(arguments);return k(a.s*a.n*b.d-b.s*a.d*b.n,a.d*b.d)};a.mul=function(b){b=l(arguments);return k(a.s*b.s*a.n*b.n,a.d*b.d)};a.div=function(b){b=l(arguments);return k(a.s*b.s*a.n*b.d,a.d*b.n)};a.set=function(a){a=l(arguments);return k(a.s*a.n,a.d)};a.mod=function(b){b=l(arguments);return 0===b.n*a.d?k(0, | ||
0):k(a.s*b.d*a.n%(b.n*a.d),b.d*a.d)};a.reciprocal=function(){return k(a.s*a.d,a.n)};a.equals=function(b){b=l(arguments);return b.s*b.n*a.d===a.s*a.n*b.d};a.divisible=function(b){b=l(arguments);return 0===b.n*a.d?!1:0===a.n*b.d%(b.n*a.d)};a.toDouble=function(){return a.s*a.n/a.d};a.toFraction=function(){return a.n>a.d?0===a.n%a.d?""+a.s*a.n/a.d:(a.s*a.n/a.d|0)+" "+a.n%a.d+"/"+a.d:a.s*a.n+" / "+a.d};a.toString=function(){var b=(""+a.n).split(""),l=a.d,c=0,d="",h=q(a.n,a.d),f;a:{f=a.d;for(var e=0;e< | ||
0):k(a.s*b.d*a.n%(b.n*a.d),b.d*a.d)};a.reciprocal=function(){return k(a.s*a.d,a.n)};a.equals=function(b){b=l(arguments);return b.s*b.n*a.d===a.s*a.n*b.d};a.divisible=function(b){b=l(arguments);return 0===b.n*a.d?!1:0===a.n*b.d%(b.n*a.d)};a.toNumber=function(){return a.s*a.n/a.d};a.toFraction=function(){return a.n>a.d?0===a.n%a.d?""+a.s*a.n/a.d:(a.s*a.n/a.d|0)+" "+a.n%a.d+"/"+a.d:a.s*a.n+" / "+a.d};a.toString=function(){var b=(""+a.n).split(""),l=a.d,c=0,d="",h=q(a.n,a.d),f;a:{f=a.d;for(var e=0;e< | ||
f;e++)if(r(e,f)===r(e+h,f)){f=e;break a}f=0}for(var e=-1,g=10+h+f+b.length,k=0;k<g;k++){c*=10;k<b.length?c+=parseInt(b[k],10):k===b.length?(d+=".",e=0):e++;if(0<h&&e===f)d+="(";else if(0<h&&e-f===h){d+=")";break}c>=l?(d+=c/l|0,c%=l):d+="0"}return(~a.s?"":"-")+d.replace(/^0+([1-9]|0\.)/g,"$1").replace(/(\d)0+$/,"$1")};a.n=0;a.d=a.s=1;n=l(arguments);k(n.s*n.n,n.d)}"undefined"!==typeof module&&module.exports&&(module.exports.Fraction=Fraction); |
{ | ||
"name": "fraction.js", | ||
"title": "fraction.js", | ||
"version": "1.2.1", | ||
"version": "1.3.0", | ||
"homepage": "http://www.xarg.org/2014/03/precise-calculations-in-javascript/", | ||
@@ -6,0 +6,0 @@ "description": "A rational number library", |
@@ -84,3 +84,19 @@ # Fraction.js - ℚ in JavaSript | ||
Mathematical correct modulo | ||
--- | ||
The behaviour on negative congruences is different to most modulo implementations in computer science. Even the *mod()* function of Fraction.js behaves in the typical way. To solve the problem with Fraction.js you could come up with this: | ||
```javascript | ||
var a = -1; | ||
var b = 10.99; | ||
console.log(new Fraction(a) | ||
.mod(b) | ||
.toNumber()); // Not correct | ||
console.log(new Fraction(a) | ||
.mod(b).add(b).mod(b) | ||
.toNumber()); // Correct! | ||
``` | ||
fmod() impreciseness circumvented | ||
@@ -227,3 +243,3 @@ --- | ||
double toDouble() | ||
double toNumber() | ||
--- | ||
@@ -230,0 +246,0 @@ Returns a decimal representation of the fraction |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
34376
289