1023dd3b8Sopenharmony_ciif (typeof T === 'undefined') require('../setup'); 2023dd3b8Sopenharmony_ci 3023dd3b8Sopenharmony_ciT('toNumber', function () { 4023dd3b8Sopenharmony_ci 5023dd3b8Sopenharmony_ci Decimal.config({ 6023dd3b8Sopenharmony_ci precision: 20, 7023dd3b8Sopenharmony_ci rounding: 4, 8023dd3b8Sopenharmony_ci toExpNeg: -7, 9023dd3b8Sopenharmony_ci toExpPos: 21, 10023dd3b8Sopenharmony_ci minE: -9e15, 11023dd3b8Sopenharmony_ci maxE: 9e15 12023dd3b8Sopenharmony_ci }); 13023dd3b8Sopenharmony_ci 14023dd3b8Sopenharmony_ci // Positive zero 15023dd3b8Sopenharmony_ci var t = function (n) { 16023dd3b8Sopenharmony_ci T.assert(1 / new Decimal(n).toNumber() === Infinity); 17023dd3b8Sopenharmony_ci } 18023dd3b8Sopenharmony_ci 19023dd3b8Sopenharmony_ci t('0'); 20023dd3b8Sopenharmony_ci t('0.0'); 21023dd3b8Sopenharmony_ci t('0.000000000000'); 22023dd3b8Sopenharmony_ci t('0e+0'); 23023dd3b8Sopenharmony_ci t('0e-0'); 24023dd3b8Sopenharmony_ci t('1e-9000000000000000') 25023dd3b8Sopenharmony_ci 26023dd3b8Sopenharmony_ci // Negative zero 27023dd3b8Sopenharmony_ci t = function (n) { 28023dd3b8Sopenharmony_ci T.assert(1 / new Decimal(n).toNumber() === -Infinity); 29023dd3b8Sopenharmony_ci } 30023dd3b8Sopenharmony_ci 31023dd3b8Sopenharmony_ci t('-0'); 32023dd3b8Sopenharmony_ci t('-0.0'); 33023dd3b8Sopenharmony_ci t('-0.000000000000'); 34023dd3b8Sopenharmony_ci t('-0e+0'); 35023dd3b8Sopenharmony_ci t('-0e-0'); 36023dd3b8Sopenharmony_ci t('-1e-9000000000000000') 37023dd3b8Sopenharmony_ci 38023dd3b8Sopenharmony_ci t = function (n, expected) { 39023dd3b8Sopenharmony_ci T.assertEqual(expected, new Decimal(n).toNumber()); 40023dd3b8Sopenharmony_ci } 41023dd3b8Sopenharmony_ci 42023dd3b8Sopenharmony_ci t(Infinity, 1 / 0); 43023dd3b8Sopenharmony_ci t('Infinity', 1 / 0); 44023dd3b8Sopenharmony_ci t(-Infinity, -1 / 0); 45023dd3b8Sopenharmony_ci t('-Infinity', -1 / 0); 46023dd3b8Sopenharmony_ci t(NaN, NaN); 47023dd3b8Sopenharmony_ci t('NaN', NaN); 48023dd3b8Sopenharmony_ci 49023dd3b8Sopenharmony_ci t(1, 1); 50023dd3b8Sopenharmony_ci t('1', 1); 51023dd3b8Sopenharmony_ci t('1.0', 1); 52023dd3b8Sopenharmony_ci t('1e+0', 1); 53023dd3b8Sopenharmony_ci t('1e-0', 1); 54023dd3b8Sopenharmony_ci 55023dd3b8Sopenharmony_ci t(-1, -1); 56023dd3b8Sopenharmony_ci t('-1', -1); 57023dd3b8Sopenharmony_ci t('-1.0', -1); 58023dd3b8Sopenharmony_ci t('-1e+0', -1); 59023dd3b8Sopenharmony_ci t('-1e-0', -1); 60023dd3b8Sopenharmony_ci 61023dd3b8Sopenharmony_ci t('123.456789876543', 123.456789876543); 62023dd3b8Sopenharmony_ci t('-123.456789876543', -123.456789876543); 63023dd3b8Sopenharmony_ci 64023dd3b8Sopenharmony_ci t('1.1102230246251565e-16', 1.1102230246251565e-16); 65023dd3b8Sopenharmony_ci t('-1.1102230246251565e-16', -1.1102230246251565e-16); 66023dd3b8Sopenharmony_ci 67023dd3b8Sopenharmony_ci t('9007199254740991', 9007199254740991); 68023dd3b8Sopenharmony_ci t('-9007199254740991', -9007199254740991); 69023dd3b8Sopenharmony_ci 70023dd3b8Sopenharmony_ci t('5e-324', 5e-324); 71023dd3b8Sopenharmony_ci t('1.7976931348623157e+308', 1.7976931348623157e+308); 72023dd3b8Sopenharmony_ci 73023dd3b8Sopenharmony_ci t('9.999999e+9000000000000000', 1 / 0); 74023dd3b8Sopenharmony_ci t('-9.999999e+9000000000000000', -1 / 0); 75023dd3b8Sopenharmony_ci t('1e-9000000000000000', 0); 76023dd3b8Sopenharmony_ci t('-1e-9000000000000000', -0); 77023dd3b8Sopenharmony_ci}); 78