mirror of
https://github.com/MikeMcl/decimal.js.git
synced 2024-10-27 20:34:12 +00:00
113 lines
2.8 KiB
JavaScript
113 lines
2.8 KiB
JavaScript
|
if (typeof T === 'undefined') require('../setup');
|
||
|
|
||
|
(function () {
|
||
|
T('clone');
|
||
|
|
||
|
function t(expression) {
|
||
|
T.assert(expression);
|
||
|
}
|
||
|
|
||
|
Decimal.config({
|
||
|
precision: 10,
|
||
|
rounding: 4,
|
||
|
toExpNeg: -7,
|
||
|
toExpPos: 21,
|
||
|
minE: -9e15,
|
||
|
maxE: 9e15
|
||
|
});
|
||
|
|
||
|
var D1 = Decimal.clone({ precision: 1 });
|
||
|
var D2 = Decimal.clone({ precision: 2 });
|
||
|
var D3 = Decimal.clone({ precision: 3 });
|
||
|
var D4 = Decimal.clone({ precision: 4 });
|
||
|
var D5 = Decimal.clone({ precision: 5 });
|
||
|
var D6 = Decimal.clone({ precision: 6 });
|
||
|
var D7 = Decimal.clone({ precision: 7 });
|
||
|
var D8 = Decimal.clone();
|
||
|
D8.config({ precision: 8 });
|
||
|
var D9 = Decimal.clone({ precision: 9 });
|
||
|
|
||
|
t(Decimal.prototype === D9.prototype);
|
||
|
t(Decimal !== D9);
|
||
|
|
||
|
var x = new Decimal(5);
|
||
|
var x1 = new D1(5);
|
||
|
var x2 = new D2(5);
|
||
|
var x3 = new D3(5);
|
||
|
var x4 = new D4(5);
|
||
|
var x5 = new D5(5);
|
||
|
var x6 = new D6(5);
|
||
|
var x7 = new D7(5);
|
||
|
var x8 = new D8(5);
|
||
|
var x9 = new D9(5);
|
||
|
|
||
|
t(x1.div(3).eq(2));
|
||
|
t(x2.div(3).eq(1.7));
|
||
|
t(x3.div(3).eq(1.67));
|
||
|
t(x4.div(3).eq(1.667));
|
||
|
t(x5.div(3).eq(1.6667));
|
||
|
t(x6.div(3).eq(1.66667));
|
||
|
t(x7.div(3).eq(1.666667));
|
||
|
t(x8.div(3).eq(1.6666667));
|
||
|
t(x9.div(3).eq(1.66666667));
|
||
|
t(x .div(3).eq(1.666666667));
|
||
|
|
||
|
var y = new Decimal(3);
|
||
|
var y1 = new D1(3);
|
||
|
var y2 = new D2(3);
|
||
|
var y3 = new D3(3);
|
||
|
var y4 = new D4(3);
|
||
|
var y5 = new D5(3);
|
||
|
var y6 = new D6(3);
|
||
|
var y7 = new D7(3);
|
||
|
var y8 = new D8(3);
|
||
|
var y9 = new D9(3);
|
||
|
|
||
|
t(x1.div(y1).eq(2));
|
||
|
t(x2.div(y2).eq(1.7));
|
||
|
t(x3.div(y3).eq(1.67));
|
||
|
t(x4.div(y4).eq(1.667));
|
||
|
t(x5.div(y5).eq(1.6667));
|
||
|
t(x6.div(y6).eq(1.66667));
|
||
|
t(x7.div(y7).eq(1.666667));
|
||
|
t(x8.div(y8).eq(1.6666667));
|
||
|
t(x9.div(y9).eq(1.66666667));
|
||
|
t(x .div(y ).eq(1.666666667));
|
||
|
|
||
|
t(x1.div(y9).eq(2));
|
||
|
t(x2.div(y8).eq(1.7));
|
||
|
t(x3.div(y7).eq(1.67));
|
||
|
t(x4.div(y6).eq(1.667));
|
||
|
t(x5.div(y5).eq(1.6667));
|
||
|
t(x6.div(y4).eq(1.66667));
|
||
|
t(x7.div(y3).eq(1.666667));
|
||
|
t(x8.div(y2).eq(1.6666667));
|
||
|
t(x9.div(y1).eq(1.66666667));
|
||
|
|
||
|
t(Decimal.precision == 10);
|
||
|
t(D9.precision === 9);
|
||
|
t(D8.precision === 8);
|
||
|
t(D7.precision === 7);
|
||
|
t(D6.precision === 6);
|
||
|
t(D5.precision === 5);
|
||
|
t(D4.precision === 4);
|
||
|
t(D3.precision === 3);
|
||
|
t(D2.precision === 2);
|
||
|
t(D1.precision === 1);
|
||
|
|
||
|
t(new Decimal(9.99).eq(new D5('9.99')));
|
||
|
t(!new Decimal(9.99).eq(new D3('-9.99')));
|
||
|
t(!new Decimal(123.456789).toSD().eq(new D3('123.456789').toSD()));
|
||
|
t(new Decimal(123.456789).round().eq(new D3('123.456789').round()));
|
||
|
|
||
|
t(new Decimal(1).constructor === new Decimal(1).constructor);
|
||
|
t(new D9(1).constructor === new D9(1).constructor);
|
||
|
t(new Decimal(1).constructor !== new D1(1).constructor);
|
||
|
t(new D8(1).constructor !== new D9(1).constructor);
|
||
|
|
||
|
T.assertException(function () { Decimal.clone(null) }, "Decimal.clone(null)");
|
||
|
|
||
|
T.stop();
|
||
|
})();
|
||
|
|