1023dd3b8Sopenharmony_ci<!DOCTYPE HTML> 2023dd3b8Sopenharmony_ci<html> 3023dd3b8Sopenharmony_ci<head> 4023dd3b8Sopenharmony_ci <meta charset="utf-8"> 5023dd3b8Sopenharmony_ci <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6023dd3b8Sopenharmony_ci <meta name="Author" content="MMclaughlin"> 7023dd3b8Sopenharmony_ci <title>decimal.js API</title> 8023dd3b8Sopenharmony_ci <style> 9023dd3b8Sopenharmony_cihtml{font-size:100%} 10023dd3b8Sopenharmony_cibody{background:#fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px; 11023dd3b8Sopenharmony_ci line-height:1.65em;min-height:100%;margin:0} 12023dd3b8Sopenharmony_cibody,i{color:#000} 13023dd3b8Sopenharmony_ci.nav{background:#fff;position:fixed;top:0;bottom:0;left:0;width:210px;overflow-y:auto; 14023dd3b8Sopenharmony_ci padding:15px 0 30px 15px} 15023dd3b8Sopenharmony_cidiv.container{width:600px;margin:50px 0 50px 240px} 16023dd3b8Sopenharmony_cip{margin:0 0 1em;width:600px} 17023dd3b8Sopenharmony_cipre,ul{margin:1em 0} 18023dd3b8Sopenharmony_cih1,h2,h3,h4,h5{margin:0;padding:1.5em 0 0} 19023dd3b8Sopenharmony_cih1,h2{padding:.75em 0} 20023dd3b8Sopenharmony_cih1{font:400 3em Consolas, monaco, monospace;color:#000;margin-bottom:1em} 21023dd3b8Sopenharmony_cih2{font-size:2.25em;color:#f00} 22023dd3b8Sopenharmony_cih3{font-size:1.75em;color:#69d2e7} 23023dd3b8Sopenharmony_cih4{font-size:1.75em;color:#f00;padding-bottom:.75em} 24023dd3b8Sopenharmony_cih5{font-size:1.2em;margin-bottom:.4em} 25023dd3b8Sopenharmony_cih6{font-size:1.1em;margin-bottom:0.8em;padding:0.5em 0} 26023dd3b8Sopenharmony_cidd dt{font-size:1.2em} 27023dd3b8Sopenharmony_cidt{padding-top:.5em} 28023dd3b8Sopenharmony_cidd{padding-top:.35em} 29023dd3b8Sopenharmony_cib{font-weight:700} 30023dd3b8Sopenharmony_cia,a:visited{color:#f00;text-decoration:none} 31023dd3b8Sopenharmony_cia:active,a:hover{outline:0;text-decoration:underline} 32023dd3b8Sopenharmony_ci.nav a,.nav b,.nav a:visited{display:block;color:#f00;font-weight:700;margin-top:15px} 33023dd3b8Sopenharmony_ci.nav b{color:#69d2e7;margin-top:20px;cursor:default;width:auto} 34023dd3b8Sopenharmony_ciul{list-style-type:none;padding:0 0 0 20px} 35023dd3b8Sopenharmony_ci.nav ul{line-height:14px;padding-left:0;margin:5px 0 0} 36023dd3b8Sopenharmony_ci.nav ul a,.nav ul a:visited,span{display:inline;color:#000;font-family:Verdana,Geneva,sans-serif; 37023dd3b8Sopenharmony_ci font-size:11px;font-weight:400;margin:0} 38023dd3b8Sopenharmony_ci.inset{margin-left:20px;font-size:.9em} 39023dd3b8Sopenharmony_ci.nav li{width:auto;margin:0 0 3px} 40023dd3b8Sopenharmony_ci.alias{font-style:italic;margin-left:20px} 41023dd3b8Sopenharmony_citable{border-collapse:collapse;border-spacing:0;border:2px solid #a7dbd8;margin:1.75em 0;padding:0} 42023dd3b8Sopenharmony_citd,th{text-align:left;margin:0;padding:2px 5px;border:1px dotted #a7dbd8} 43023dd3b8Sopenharmony_cith{border-top:2px solid #a7dbd8;border-bottom:2px solid #a7dbd8;color:#f00} 44023dd3b8Sopenharmony_cicode,pre{font-family:Consolas, monaco, monospace;font-weight:400} 45023dd3b8Sopenharmony_cipre{background:#f5f5f5;white-space:pre-wrap;word-wrap:break-word;border-left:5px solid #a7dbd8; 46023dd3b8Sopenharmony_ci padding:1px 0 1px 15px;margin:1.2em 0} 47023dd3b8Sopenharmony_cicode,.nav-title{color:#f00} 48023dd3b8Sopenharmony_ci.end{margin-bottom:25px} 49023dd3b8Sopenharmony_ci.centre{text-align:center} 50023dd3b8Sopenharmony_ci#modes,#configProps{color:#f00} 51023dd3b8Sopenharmony_ci.spacer{line-height:0px} 52023dd3b8Sopenharmony_ci#faq{margin:3em 0 0} 53023dd3b8Sopenharmony_cili span{float:right;margin-right:10px;color:#c0c0c0} 54023dd3b8Sopenharmony_ci#js{font:inherit;color:#f00} 55023dd3b8Sopenharmony_ci </style> 56023dd3b8Sopenharmony_ci</head> 57023dd3b8Sopenharmony_ci<body> 58023dd3b8Sopenharmony_ci 59023dd3b8Sopenharmony_ci <div class="nav"> 60023dd3b8Sopenharmony_ci 61023dd3b8Sopenharmony_ci <a class='nav-title' href="#">API</a> 62023dd3b8Sopenharmony_ci 63023dd3b8Sopenharmony_ci <b>CONSTRUCTOR</b> 64023dd3b8Sopenharmony_ci <ul><li><a href="#decimal"><strong>Decimal</strong></a></li></ul> 65023dd3b8Sopenharmony_ci 66023dd3b8Sopenharmony_ci <a href="#methods">Methods</a> 67023dd3b8Sopenharmony_ci <ul> 68023dd3b8Sopenharmony_ci <li><a href="#Dabs" >abs</a></li> 69023dd3b8Sopenharmony_ci <li><a href="#Dacos" >acos</a></li> 70023dd3b8Sopenharmony_ci <li><a href="#Dacosh" >acosh</a></li> 71023dd3b8Sopenharmony_ci <li><a href="#Dadd" >add</a></li> 72023dd3b8Sopenharmony_ci <li><a href="#Dasin" >asin</a></li> 73023dd3b8Sopenharmony_ci <li><a href="#Dasinh" >asinh</a></li> 74023dd3b8Sopenharmony_ci <li><a href="#Datan" >atan</a></li> 75023dd3b8Sopenharmony_ci <li><a href="#Datanh" >atanh</a></li> 76023dd3b8Sopenharmony_ci <li><a href="#Datan2" >atan2</a></li> 77023dd3b8Sopenharmony_ci <li><a href="#Dcbrt" >cbrt</a></li> 78023dd3b8Sopenharmony_ci <li><a href="#Dceil" >ceil</a></li> 79023dd3b8Sopenharmony_ci <li><a href="#Dclamp" >clamp</a></li> 80023dd3b8Sopenharmony_ci <li><a href="#Dclone" >clone</a></li> 81023dd3b8Sopenharmony_ci <li><a href="#Dcos" >cos</a></li> 82023dd3b8Sopenharmony_ci <li><a href="#Dcosh" >cosh</a></li> 83023dd3b8Sopenharmony_ci <li><a href="#Ddiv" >div</a></li> 84023dd3b8Sopenharmony_ci <li><a href="#Dexp" >exp</a></li> 85023dd3b8Sopenharmony_ci <li><a href="#Dfloor" >floor</a></li> 86023dd3b8Sopenharmony_ci <li><a href="#Dhypot" >hypot</a></li> 87023dd3b8Sopenharmony_ci <li><a href="#DisDecimal" >isDecimal</a></li> 88023dd3b8Sopenharmony_ci <li><a href="#Dln" >ln</a></li> 89023dd3b8Sopenharmony_ci <li><a href="#Dlog" >log</a></li> 90023dd3b8Sopenharmony_ci <li><a href="#Dlog2" >log2</a></li> 91023dd3b8Sopenharmony_ci <li><a href="#Dlog10" >log10</a></li> 92023dd3b8Sopenharmony_ci <li><a href="#Dmax" >max</a></li> 93023dd3b8Sopenharmony_ci <li><a href="#Dmin" >min</a></li> 94023dd3b8Sopenharmony_ci <li><a href="#Dmod" >mod</a></li> 95023dd3b8Sopenharmony_ci <li><a href="#Dmul" >mul</a></li> 96023dd3b8Sopenharmony_ci <li><a href="#DnoConflict">noConflict</a></li> 97023dd3b8Sopenharmony_ci <li><a href="#Dpow" >pow</a></li> 98023dd3b8Sopenharmony_ci <li><a href="#Drandom" >random</a></li> 99023dd3b8Sopenharmony_ci <li><a href="#Dround" >round</a></li> 100023dd3b8Sopenharmony_ci <li><a href="#Dset" >set</a></li> 101023dd3b8Sopenharmony_ci <li><a href="#Dsign" >sign</a></li> 102023dd3b8Sopenharmony_ci <li><a href="#Dsin" >sin</a></li> 103023dd3b8Sopenharmony_ci <li><a href="#Dsinh" >sinh</a></li> 104023dd3b8Sopenharmony_ci <li><a href="#Dsqrt" >sqrt</a></li> 105023dd3b8Sopenharmony_ci <li><a href="#Dsub" >sub</a></li> 106023dd3b8Sopenharmony_ci <li><a href="#Dsum" >sum</a></li> 107023dd3b8Sopenharmony_ci <li><a href="#Dtan" >tan</a></li> 108023dd3b8Sopenharmony_ci <li><a href="#Dtanh" >tanh</a></li> 109023dd3b8Sopenharmony_ci <li><a href="#Dtrunc" >trunc</a></li> 110023dd3b8Sopenharmony_ci </ul> 111023dd3b8Sopenharmony_ci 112023dd3b8Sopenharmony_ci <a href="#constructor-properties">Properties</a> 113023dd3b8Sopenharmony_ci <ul> 114023dd3b8Sopenharmony_ci <li><a href="#precision">precision</a></li> 115023dd3b8Sopenharmony_ci <li><a href="#rounding" >rounding</a></li> 116023dd3b8Sopenharmony_ci <li><a href="#minE" >minE</a></li> 117023dd3b8Sopenharmony_ci <li><a href="#maxE" >maxE</a></li> 118023dd3b8Sopenharmony_ci <li><a href="#toExpNeg" >toExpNeg</a></li> 119023dd3b8Sopenharmony_ci <li><a href="#toExpPos" >toExpPos</a></li> 120023dd3b8Sopenharmony_ci <li><a href="#modulo" >modulo</a></li> 121023dd3b8Sopenharmony_ci <li><a href="#crypto" >crypto</a></li> 122023dd3b8Sopenharmony_ci <li class='spacer'> </li> 123023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_UP</a></li> 124023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_DOWN</a></li> 125023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_CEIL</a></li> 126023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_FLOOR</a></li> 127023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_HALF_UP</a></li> 128023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_HALF_DOWN</a></li> 129023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_HALF_EVEN</a></li> 130023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_HALF_CEIL</a></li> 131023dd3b8Sopenharmony_ci <li><a href="#modes">ROUND_HALF_FLOOR</a></li> 132023dd3b8Sopenharmony_ci <li><a href="#modes">EUCLID</a></li> 133023dd3b8Sopenharmony_ci </ul> 134023dd3b8Sopenharmony_ci 135023dd3b8Sopenharmony_ci <b> INSTANCE </b> 136023dd3b8Sopenharmony_ci 137023dd3b8Sopenharmony_ci <a href="#prototype-methods">Methods</a> 138023dd3b8Sopenharmony_ci <ul> 139023dd3b8Sopenharmony_ci <li><a href="#abs" >absoluteValue </a><span>abs</span> </li> 140023dd3b8Sopenharmony_ci <li><a href="#ceil" >ceil </a> </li> 141023dd3b8Sopenharmony_ci <li><a href="#cmp" >comparedTo </a><span>cmp</span> </li> 142023dd3b8Sopenharmony_ci <li><a href="#clamp" >clampedTo </a><span>clamp</span> </li> 143023dd3b8Sopenharmony_ci <li><a href="#cos" >cosine </a><span>cos</span> </li> 144023dd3b8Sopenharmony_ci <li><a href="#cbrt" >cubeRoot </a><span>cbrt</span> </li> 145023dd3b8Sopenharmony_ci <li><a href="#dp" >decimalPlaces </a><span>dp</span> </li> 146023dd3b8Sopenharmony_ci <li><a href="#div" >dividedBy </a><span>div</span> </li> 147023dd3b8Sopenharmony_ci <li><a href="#divToInt" >dividedToIntegerBy </a><span>divToInt</span></li> 148023dd3b8Sopenharmony_ci <li><a href="#eq" >equals </a><span>eq</span> </li> 149023dd3b8Sopenharmony_ci <li><a href="#floor" >floor </a> </li> 150023dd3b8Sopenharmony_ci <li><a href="#gt" >greaterThan </a><span>gt</span> </li> 151023dd3b8Sopenharmony_ci <li><a href="#gte" >greaterThanOrEqualTo </a><span>gte</span> </li> 152023dd3b8Sopenharmony_ci <li><a href="#cosh" >hyperbolicCosine </a><span>cosh</span> </li> 153023dd3b8Sopenharmony_ci <li><a href="#sinh" >hyperbolicSine </a><span>sinh</span> </li> 154023dd3b8Sopenharmony_ci <li><a href="#tanh" >hyperbolicTangent </a><span>tanh</span> </li> 155023dd3b8Sopenharmony_ci <li><a href="#acos" >inverseCosine </a><span>acos</span> </li> 156023dd3b8Sopenharmony_ci <li><a href="#acosh" >inverseHyperbolicCosine </a><span>acosh</span> </li> 157023dd3b8Sopenharmony_ci <li><a href="#asinh" >inverseHyperbolicSine </a><span>asinh</span> </li> 158023dd3b8Sopenharmony_ci <li><a href="#atanh" >inverseHyperbolicTangent</a><span>atanh</span> </li> 159023dd3b8Sopenharmony_ci <li><a href="#asin" >inverseSine </a><span>asin</span> </li> 160023dd3b8Sopenharmony_ci <li><a href="#atan" >inverseTangent </a><span>atan</span> </li> 161023dd3b8Sopenharmony_ci <li><a href="#isFinite" >isFinite </a> </li> 162023dd3b8Sopenharmony_ci <li><a href="#isInt" >isInteger </a><span>isInt</span> </li> 163023dd3b8Sopenharmony_ci <li><a href="#isNaN" >isNaN </a> </li> 164023dd3b8Sopenharmony_ci <li><a href="#isNeg" >isNegative </a><span>isNeg</span> </li> 165023dd3b8Sopenharmony_ci <li><a href="#isPos" >isPositive </a><span>isPos</span> </li> 166023dd3b8Sopenharmony_ci <li><a href="#isZero" >isZero </a> </li> 167023dd3b8Sopenharmony_ci <li><a href="#lt" >lessThan </a><span>lt</span> </li> 168023dd3b8Sopenharmony_ci <li><a href="#lte" >lessThanOrEqualTo </a><span>lte</span> </li> 169023dd3b8Sopenharmony_ci <li><a href="#log" >logarithm </a><span>log</span> </li> 170023dd3b8Sopenharmony_ci <li><a href="#sub" >minus </a><span>sub</span> </li> 171023dd3b8Sopenharmony_ci <li><a href="#mod" >modulo </a><span>mod</span> </li> 172023dd3b8Sopenharmony_ci <li><a href="#exp" >naturalExponential </a><span>exp</span> </li> 173023dd3b8Sopenharmony_ci <li><a href="#ln" >naturalLogarithm </a><span>ln</span> </li> 174023dd3b8Sopenharmony_ci <li><a href="#neg" >negated </a><span>neg</span> </li> 175023dd3b8Sopenharmony_ci <li><a href="#add" >plus </a><span>add</span> </li> 176023dd3b8Sopenharmony_ci <li><a href="#sd" >precision </a><span>sd</span> </li> 177023dd3b8Sopenharmony_ci <li><a href="#round" >round </a> </li> 178023dd3b8Sopenharmony_ci <li><a href="#sin" >sine </a><span>sin</span> </li> 179023dd3b8Sopenharmony_ci <li><a href="#sqrt" >squareRoot </a><span>sqrt</span> </li> 180023dd3b8Sopenharmony_ci <li><a href="#tan" >tangent </a><span>tan</span> </li> 181023dd3b8Sopenharmony_ci <li><a href="#mul" >times </a><span>mul</span> </li> 182023dd3b8Sopenharmony_ci <li><a href="#toBinary" >toBinary </a> </li> 183023dd3b8Sopenharmony_ci <li><a href="#toDP" >toDecimalPlaces </a><span>toDP</span> </li> 184023dd3b8Sopenharmony_ci <li><a href="#toExponential">toExponential </a> </li> 185023dd3b8Sopenharmony_ci <li><a href="#toFixed" >toFixed </a> </li> 186023dd3b8Sopenharmony_ci <li><a href="#toFraction" >toFraction </a> </li> 187023dd3b8Sopenharmony_ci <li><a href="#toHex" >toHexadecimal </a><span>toHex</span> </li> 188023dd3b8Sopenharmony_ci <li><a href="#toJSON" >toJSON </a> </li> 189023dd3b8Sopenharmony_ci <li><a href="#toNearest" >toNearest </a> </li> 190023dd3b8Sopenharmony_ci <li><a href="#toNumber" >toNumber </a> </li> 191023dd3b8Sopenharmony_ci <li><a href="#toOctal" >toOctal </a> </li> 192023dd3b8Sopenharmony_ci <li><a href="#pow" >toPower </a><span>pow</span> </li> 193023dd3b8Sopenharmony_ci <li><a href="#toPrecision" >toPrecision </a> </li> 194023dd3b8Sopenharmony_ci <li><a href="#toSD" >toSignificantDigits </a><span>toSD</span> </li> 195023dd3b8Sopenharmony_ci <li><a href="#toString" >toString </a> </li> 196023dd3b8Sopenharmony_ci <li><a href="#trunc" >truncated </a><span>trunc</span> </li> 197023dd3b8Sopenharmony_ci <li><a href="#valueOf" >valueOf </a> </li> 198023dd3b8Sopenharmony_ci </ul> 199023dd3b8Sopenharmony_ci 200023dd3b8Sopenharmony_ci <a href="#instance-properties">Properties</a> 201023dd3b8Sopenharmony_ci <ul> 202023dd3b8Sopenharmony_ci <li><a href="#digits" >d</a><span>digits</span></li> 203023dd3b8Sopenharmony_ci <li><a href="#exponent" >e</a><span>exponent</span></li> 204023dd3b8Sopenharmony_ci <li><a href="#sign" >s</a><span>sign</span></li> 205023dd3b8Sopenharmony_ci </ul> 206023dd3b8Sopenharmony_ci 207023dd3b8Sopenharmony_ci <a href="#zero-nan-infinity">Zero, NaN & Infinity</a> 208023dd3b8Sopenharmony_ci <a href="#Errors">Errors</a> 209023dd3b8Sopenharmony_ci <a href="#Pi">Pi</a> 210023dd3b8Sopenharmony_ci <a class='end' href="#faq">FAQ</a> 211023dd3b8Sopenharmony_ci 212023dd3b8Sopenharmony_ci </div> 213023dd3b8Sopenharmony_ci 214023dd3b8Sopenharmony_ci <div class="container"> 215023dd3b8Sopenharmony_ci 216023dd3b8Sopenharmony_ci <h1>decimal<span id='js'>.js</span></h1> 217023dd3b8Sopenharmony_ci 218023dd3b8Sopenharmony_ci <p>An arbitrary-precision Decimal type for JavaScript.</p> 219023dd3b8Sopenharmony_ci <p><a href='https://github.com/MikeMcl/decimal.js'>Hosted on GitHub</a>.</p> 220023dd3b8Sopenharmony_ci 221023dd3b8Sopenharmony_ci <h2>API</h2> 222023dd3b8Sopenharmony_ci 223023dd3b8Sopenharmony_ci <p> 224023dd3b8Sopenharmony_ci See the <a href='https://github.com/MikeMcl/decimal.js'>README</a> on GitHub for a quick-start 225023dd3b8Sopenharmony_ci introduction. 226023dd3b8Sopenharmony_ci </p> 227023dd3b8Sopenharmony_ci <p> 228023dd3b8Sopenharmony_ci In all examples below, <code>var</code> and semicolons are not shown, and if a commented-out 229023dd3b8Sopenharmony_ci value is in quotes it means <code>toString</code> has been called on the preceding expression. 230023dd3b8Sopenharmony_ci </p><br /> 231023dd3b8Sopenharmony_ci <p> 232023dd3b8Sopenharmony_ci When the library is loaded, it defines a single function object, 233023dd3b8Sopenharmony_ci <a href='#decimal'><code>Decimal</code></a>, the constructor of Decimal instances. 234023dd3b8Sopenharmony_ci </p> 235023dd3b8Sopenharmony_ci <p> 236023dd3b8Sopenharmony_ci <i> 237023dd3b8Sopenharmony_ci If necessary, multiple Decimal constructors can be created, each with their own independent 238023dd3b8Sopenharmony_ci configuration, e.g. precision and range, which applies to all Decimal instances created from 239023dd3b8Sopenharmony_ci it. 240023dd3b8Sopenharmony_ci </i> 241023dd3b8Sopenharmony_ci </p> 242023dd3b8Sopenharmony_ci <p> 243023dd3b8Sopenharmony_ci <i> 244023dd3b8Sopenharmony_ci A new Decimal constructor is created by calling the <code><a href='#Dclone'>clone</a></code> 245023dd3b8Sopenharmony_ci method of an already existing Decimal constructor. 246023dd3b8Sopenharmony_ci </i> 247023dd3b8Sopenharmony_ci </p> 248023dd3b8Sopenharmony_ci 249023dd3b8Sopenharmony_ci 250023dd3b8Sopenharmony_ci 251023dd3b8Sopenharmony_ci <h3 class='end'>CONSTRUCTOR</h3> 252023dd3b8Sopenharmony_ci 253023dd3b8Sopenharmony_ci <h5 id="decimal"> 254023dd3b8Sopenharmony_ci Decimal<code class='inset'>Decimal(value) <i>⇒ Decimal</i></code> 255023dd3b8Sopenharmony_ci </h5> 256023dd3b8Sopenharmony_ci <dl> 257023dd3b8Sopenharmony_ci <dt><code>value</code>: <i>number|string|Decimal</i></dt> 258023dd3b8Sopenharmony_ci <dd> 259023dd3b8Sopenharmony_ci A legitimate <code>value</code> is an integer or float, including <code>±0</code>, or 260023dd3b8Sopenharmony_ci is <code>±Infinity</code>, or <code>NaN</code>. 261023dd3b8Sopenharmony_ci </dd> 262023dd3b8Sopenharmony_ci <dd> 263023dd3b8Sopenharmony_ci The number of digits of <code>value</code> is not limited, except by JavaScript's maximum 264023dd3b8Sopenharmony_ci array size and, in practice, the processing time required. 265023dd3b8Sopenharmony_ci </dd> 266023dd3b8Sopenharmony_ci <dd> 267023dd3b8Sopenharmony_ci The allowable range of <code>value</code> is defined in terms of a maximum exponent, see 268023dd3b8Sopenharmony_ci <a href='#maxE'>maxE</a>, and a minimum exponent, see <a href='#minE'>minE</a>. 269023dd3b8Sopenharmony_ci </dd> 270023dd3b8Sopenharmony_ci <dd> 271023dd3b8Sopenharmony_ci As well as in decimal, a string <code>value</code> may be expressed in binary, hexadecimal 272023dd3b8Sopenharmony_ci or octal, if the appropriate prefix is included: <code>0x</code> or <code>0X</code> for 273023dd3b8Sopenharmony_ci hexadecimal, <code>0b</code> or <code>0B</code> for binary, and <code>0o</code> or 274023dd3b8Sopenharmony_ci <code>0O</code> for octal. 275023dd3b8Sopenharmony_ci </dd> 276023dd3b8Sopenharmony_ci <dd> 277023dd3b8Sopenharmony_ci Both decimal and non-decimal string values may use exponential (floating-point), as well as 278023dd3b8Sopenharmony_ci normal (fixed-point) notation. 279023dd3b8Sopenharmony_ci </dd> 280023dd3b8Sopenharmony_ci <dd> 281023dd3b8Sopenharmony_ci In exponential notation, <code>e</code> or <code>E</code> defines a power-of-ten exponent 282023dd3b8Sopenharmony_ci for decimal values, and <code>p</code> or <code>P</code> defines a power-of-two exponent for 283023dd3b8Sopenharmony_ci non-decimal values, i.e. binary, hexadecimal or octal. 284023dd3b8Sopenharmony_ci </dd> 285023dd3b8Sopenharmony_ci </dl> 286023dd3b8Sopenharmony_ci <p>Returns a new Decimal object instance.</p> 287023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>value</code>.</p> 288023dd3b8Sopenharmony_ci <pre> 289023dd3b8Sopenharmony_cix = new Decimal(9) // '9' 290023dd3b8Sopenharmony_ciy = new Decimal(x) // '9' 291023dd3b8Sopenharmony_ci 292023dd3b8Sopenharmony_cinew Decimal('5032485723458348569331745.33434346346912144534543') 293023dd3b8Sopenharmony_cinew Decimal('4.321e+4') // '43210' 294023dd3b8Sopenharmony_cinew Decimal('-735.0918e-430') // '-7.350918e-428' 295023dd3b8Sopenharmony_cinew Decimal('5.6700000') // '5.67' 296023dd3b8Sopenharmony_cinew Decimal(Infinity) // 'Infinity' 297023dd3b8Sopenharmony_cinew Decimal(NaN) // 'NaN' 298023dd3b8Sopenharmony_cinew Decimal('.5') // '0.5' 299023dd3b8Sopenharmony_cinew Decimal('-0b10110100.1') // '-180.5' 300023dd3b8Sopenharmony_cinew Decimal('0xff.8') // '255.5' 301023dd3b8Sopenharmony_ci 302023dd3b8Sopenharmony_cinew Decimal(0.046875) // '0.046875' 303023dd3b8Sopenharmony_cinew Decimal('0.046875000000') // '0.046875' 304023dd3b8Sopenharmony_cinew Decimal('0.046_875_000_000') // '0.046875' 305023dd3b8Sopenharmony_ci 306023dd3b8Sopenharmony_cinew Decimal(4.6875e-2) // '0.046875' 307023dd3b8Sopenharmony_cinew Decimal('468.75e-4') // '0.046875' 308023dd3b8Sopenharmony_ci 309023dd3b8Sopenharmony_cinew Decimal('0b0.000011') // '0.046875' 310023dd3b8Sopenharmony_cinew Decimal('0o0.03') // '0.046875' 311023dd3b8Sopenharmony_cinew Decimal('0x0.0c') // '0.046875' 312023dd3b8Sopenharmony_ci 313023dd3b8Sopenharmony_cinew Decimal('0b1.1p-5') // '0.046875' 314023dd3b8Sopenharmony_cinew Decimal('0o1.4p-5') // '0.046875' 315023dd3b8Sopenharmony_cinew Decimal('0x1.8p-5') // '0.046875'</pre> 316023dd3b8Sopenharmony_ci 317023dd3b8Sopenharmony_ci 318023dd3b8Sopenharmony_ci 319023dd3b8Sopenharmony_ci <h4 id="methods">Methods</h4> 320023dd3b8Sopenharmony_ci <p>The methods of a Decimal constructor.</p> 321023dd3b8Sopenharmony_ci 322023dd3b8Sopenharmony_ci 323023dd3b8Sopenharmony_ci 324023dd3b8Sopenharmony_ci <h5 id="Dabs">abs<code class='inset'>.abs(x) <i>⇒ Decimal</i></code></h5> 325023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 326023dd3b8Sopenharmony_ci <p>See <code><a href='#abs'>absoluteValue</a></code>.</p> 327023dd3b8Sopenharmony_ci <pre>a = Decimal.abs(x) 328023dd3b8Sopenharmony_cib = new Decimal(x).abs() 329023dd3b8Sopenharmony_cia.equals(b) // true</pre> 330023dd3b8Sopenharmony_ci 331023dd3b8Sopenharmony_ci 332023dd3b8Sopenharmony_ci 333023dd3b8Sopenharmony_ci <h5 id="Dacos">acos<code class='inset'>.acos(x) <i>⇒ Decimal</i></code></h5> 334023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 335023dd3b8Sopenharmony_ci <p>See <code><a href='#acos'>inverseCosine</a></code>.</p> 336023dd3b8Sopenharmony_ci <pre>a = Decimal.acos(x) 337023dd3b8Sopenharmony_cib = new Decimal(x).acos() 338023dd3b8Sopenharmony_cia.equals(b) // true</pre> 339023dd3b8Sopenharmony_ci 340023dd3b8Sopenharmony_ci 341023dd3b8Sopenharmony_ci 342023dd3b8Sopenharmony_ci <h5 id="Dacosh">acosh<code class='inset'>.acosh(x) <i>⇒ Decimal</i></code></h5> 343023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 344023dd3b8Sopenharmony_ci <p>See <code><a href='#acos'>inverseHyperbolicCosine</a></code>.</p> 345023dd3b8Sopenharmony_ci <pre>a = Decimal.acosh(x) 346023dd3b8Sopenharmony_cib = new Decimal(x).acosh() 347023dd3b8Sopenharmony_cia.equals(b) // true</pre> 348023dd3b8Sopenharmony_ci 349023dd3b8Sopenharmony_ci 350023dd3b8Sopenharmony_ci 351023dd3b8Sopenharmony_ci <h5 id="Dadd">add<code class='inset'>.add(x, y) <i>⇒ Decimal</i></code></h5> 352023dd3b8Sopenharmony_ci <p> 353023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 354023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 355023dd3b8Sopenharmony_ci </p> 356023dd3b8Sopenharmony_ci <p>See <code><a href='#add'>plus</a></code>.</p> 357023dd3b8Sopenharmony_ci <pre>a = Decimal.add(x, y) 358023dd3b8Sopenharmony_cib = new Decimal(x).plus(y) 359023dd3b8Sopenharmony_cia.equals(b) // true</pre> 360023dd3b8Sopenharmony_ci 361023dd3b8Sopenharmony_ci 362023dd3b8Sopenharmony_ci 363023dd3b8Sopenharmony_ci <h5 id="Dasin">asin<code class='inset'>.asin(x) <i>⇒ Decimal</i></code></h5> 364023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 365023dd3b8Sopenharmony_ci <p>See <code><a href='#asin'>inverseSine</a></code>.</p> 366023dd3b8Sopenharmony_ci <pre>a = Decimal.asin(x) 367023dd3b8Sopenharmony_cib = new Decimal(x).asin() 368023dd3b8Sopenharmony_cia.equals(b) // true</pre> 369023dd3b8Sopenharmony_ci 370023dd3b8Sopenharmony_ci 371023dd3b8Sopenharmony_ci 372023dd3b8Sopenharmony_ci <h5 id="Dasinh">asinh<code class='inset'>.asinh(x) <i>⇒ Decimal</i></code></h5> 373023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 374023dd3b8Sopenharmony_ci <p>See <code><a href='#asin'>inverseHyperbolicSine</a></code>.</p> 375023dd3b8Sopenharmony_ci <pre>a = Decimal.asinh(x) 376023dd3b8Sopenharmony_cib = new Decimal(x).asinh() 377023dd3b8Sopenharmony_cia.equals(b) // true</pre> 378023dd3b8Sopenharmony_ci 379023dd3b8Sopenharmony_ci 380023dd3b8Sopenharmony_ci 381023dd3b8Sopenharmony_ci <h5 id="Datan">atan<code class='inset'>.atan(x) <i>⇒ Decimal</i></code></h5> 382023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 383023dd3b8Sopenharmony_ci <p>See <code><a href='#atan'>inverseTangent</a></code>.</p> 384023dd3b8Sopenharmony_ci <pre>a = Decimal.atan(x) 385023dd3b8Sopenharmony_cib = new Decimal(x).atan() 386023dd3b8Sopenharmony_cia.equals(b) // true</pre> 387023dd3b8Sopenharmony_ci 388023dd3b8Sopenharmony_ci 389023dd3b8Sopenharmony_ci 390023dd3b8Sopenharmony_ci <h5 id="Datanh">atanh<code class='inset'>.atanh(x) <i>⇒ Decimal</i></code></h5> 391023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 392023dd3b8Sopenharmony_ci <p>See <code><a href='#atan'>inverseHyperbolicTangent</a></code>.</p> 393023dd3b8Sopenharmony_ci <pre>a = Decimal.atanh(x) 394023dd3b8Sopenharmony_cib = new Decimal(x).atanh() 395023dd3b8Sopenharmony_cia.equals(b) // true</pre> 396023dd3b8Sopenharmony_ci 397023dd3b8Sopenharmony_ci 398023dd3b8Sopenharmony_ci 399023dd3b8Sopenharmony_ci <h5 id="Datan2">atan2<code class='inset'>.atan2(y, x) <i>⇒ Decimal</i></code></h5> 400023dd3b8Sopenharmony_ci <p> 401023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i><br /> 402023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i> 403023dd3b8Sopenharmony_ci </p> 404023dd3b8Sopenharmony_ci <p> 405023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse tangent in radians of the quotient of 406023dd3b8Sopenharmony_ci <code>y</code> and <code>x</code>, rounded to <a href='#precision'><code>precision</code></a> 407023dd3b8Sopenharmony_ci significant digits using rounding mode <a href='#rounding'><code>rounding</code></a>. 408023dd3b8Sopenharmony_ci </p> 409023dd3b8Sopenharmony_ci <p> 410023dd3b8Sopenharmony_ci The signs of <code>y</code> and <code>x</code> are used to determine the quadrant of the 411023dd3b8Sopenharmony_ci result. 412023dd3b8Sopenharmony_ci </p> 413023dd3b8Sopenharmony_ci <p> 414023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 415023dd3b8Sopenharmony_ci Range: [<code>-pi, pi</code>] 416023dd3b8Sopenharmony_ci </p> 417023dd3b8Sopenharmony_ci <p> 418023dd3b8Sopenharmony_ci See <a href='#Pi'><code>Pi</code></a> and 419023dd3b8Sopenharmony_ci <a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2'><code>Math.atan2()</code>.</a> 420023dd3b8Sopenharmony_ci </p> 421023dd3b8Sopenharmony_ci <pre>r = Decimal.atan2(y, x)</pre> 422023dd3b8Sopenharmony_ci 423023dd3b8Sopenharmony_ci 424023dd3b8Sopenharmony_ci 425023dd3b8Sopenharmony_ci <h5 id="Dcbrt">cbrt<code class='inset'>.cbrt(x) <i>⇒ Decimal</i></code></h5> 426023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 427023dd3b8Sopenharmony_ci <p>See <code><a href='#cbrt'>cubeRoot</a></code>.</p> 428023dd3b8Sopenharmony_ci <pre>a = Decimal.cbrt(x) 429023dd3b8Sopenharmony_cib = new Decimal(x).cbrt() 430023dd3b8Sopenharmony_cia.equals(b) // true</pre> 431023dd3b8Sopenharmony_ci 432023dd3b8Sopenharmony_ci 433023dd3b8Sopenharmony_ci 434023dd3b8Sopenharmony_ci <h5 id="Dceil">ceil<code class='inset'>.ceil(x) <i>⇒ Decimal</i></code></h5> 435023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 436023dd3b8Sopenharmony_ci <p>See <code><a href='#ceil'>ceil</a></code>.</p> 437023dd3b8Sopenharmony_ci <pre>a = Decimal.ceil(x) 438023dd3b8Sopenharmony_cib = new Decimal(x).ceil() 439023dd3b8Sopenharmony_cia.equals(b) // true</pre> 440023dd3b8Sopenharmony_ci 441023dd3b8Sopenharmony_ci 442023dd3b8Sopenharmony_ci 443023dd3b8Sopenharmony_ci <h5 id="Dclamp">clamp<code class='inset'>.clamp(min, max) <i>⇒ Decimal</i></code></h5> 444023dd3b8Sopenharmony_ci <p> 445023dd3b8Sopenharmony_ci <code>min</code>: <i>number|string|Decimal</i><br /> 446023dd3b8Sopenharmony_ci <code>max</code>: <i>number|string|Decimal</i> 447023dd3b8Sopenharmony_ci </p> 448023dd3b8Sopenharmony_ci <p>See <code><a href='#clamp'>clampedTo</a></code>.</p> 449023dd3b8Sopenharmony_ci <pre>Decimal.clamp(10.1, 0, 10) // '10'</pre> 450023dd3b8Sopenharmony_ci 451023dd3b8Sopenharmony_ci 452023dd3b8Sopenharmony_ci 453023dd3b8Sopenharmony_ci <h5 id="Dclone"> 454023dd3b8Sopenharmony_ci clone 455023dd3b8Sopenharmony_ci <code class='inset'>.clone([object]) <i>⇒ Decimal constructor</i></code> 456023dd3b8Sopenharmony_ci </h5> 457023dd3b8Sopenharmony_ci <p><code>object</code>: <i>object</i></p> 458023dd3b8Sopenharmony_ci <p> 459023dd3b8Sopenharmony_ci Returns a new independent Decimal constructor with configuration settings as described by 460023dd3b8Sopenharmony_ci <code>object</code> (see <a href='#Dset'><code>set</code></a>), or with the same 461023dd3b8Sopenharmony_ci settings as <code>this</code> Decimal constructor if <code>object</code> is omitted. 462023dd3b8Sopenharmony_ci </p> 463023dd3b8Sopenharmony_ci <pre>Decimal.set({ precision: 5 }) 464023dd3b8Sopenharmony_ciDecimal9 = Decimal.clone({ precision: 9 }) 465023dd3b8Sopenharmony_ci 466023dd3b8Sopenharmony_cia = new Decimal(1) 467023dd3b8Sopenharmony_cib = new Decimal9(1) 468023dd3b8Sopenharmony_ci 469023dd3b8Sopenharmony_cia.div(3) // 0.33333 470023dd3b8Sopenharmony_cib.div(3) // 0.333333333 471023dd3b8Sopenharmony_ci 472023dd3b8Sopenharmony_ci// Decimal9 = Decimal.clone({ precision: 9 }) is equivalent to: 473023dd3b8Sopenharmony_ciDecimal9 = Decimal.clone() 474023dd3b8Sopenharmony_ciDecimal9.set({ precision: 9 })</pre> 475023dd3b8Sopenharmony_ci <p> 476023dd3b8Sopenharmony_ci If <code>object</code> has a <code>'defaults'</code> property with value <code>true</code> 477023dd3b8Sopenharmony_ci then the new constructor will use the default configuration. 478023dd3b8Sopenharmony_ci </p> 479023dd3b8Sopenharmony_ci <pre> 480023dd3b8Sopenharmony_ciD1 = Decimal.clone({ defaults: true }) 481023dd3b8Sopenharmony_ci 482023dd3b8Sopenharmony_ci// Use the defaults except for precision 483023dd3b8Sopenharmony_ciD2 = Decimal.clone({ defaults: true, precision: 50 })</pre> 484023dd3b8Sopenharmony_ci <p> 485023dd3b8Sopenharmony_ci It is not inefficient in terms of memory usage to use multiple Decimal constructors as 486023dd3b8Sopenharmony_ci functions are shared between them. 487023dd3b8Sopenharmony_ci </p> 488023dd3b8Sopenharmony_ci 489023dd3b8Sopenharmony_ci 490023dd3b8Sopenharmony_ci <h5 id="Dcos">cos<code class='inset'>.cos(x) <i>⇒ Decimal</i></code></h5> 491023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 492023dd3b8Sopenharmony_ci <p>See <code><a href='#cos'>cosine</a></code>.</p> 493023dd3b8Sopenharmony_ci <pre>a = Decimal.cos(x) 494023dd3b8Sopenharmony_cib = new Decimal(x).cos() 495023dd3b8Sopenharmony_cia.equals(b) // true</pre> 496023dd3b8Sopenharmony_ci 497023dd3b8Sopenharmony_ci 498023dd3b8Sopenharmony_ci 499023dd3b8Sopenharmony_ci <h5 id="Dcosh">cosh<code class='inset'>.cosh(x) <i>⇒ Decimal</i></code></h5> 500023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 501023dd3b8Sopenharmony_ci <p>See <code><a href='#cos'>hyperbolicCosine</a></code>.</p> 502023dd3b8Sopenharmony_ci <pre>a = Decimal.cosh(x) 503023dd3b8Sopenharmony_cib = new Decimal(x).cosh() 504023dd3b8Sopenharmony_cia.equals(b) // true</pre> 505023dd3b8Sopenharmony_ci 506023dd3b8Sopenharmony_ci 507023dd3b8Sopenharmony_ci 508023dd3b8Sopenharmony_ci <h5 id="Ddiv">div<code class='inset'>.div(x, y) <i>⇒ Decimal</i></code></h5> 509023dd3b8Sopenharmony_ci <p> 510023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 511023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 512023dd3b8Sopenharmony_ci </p> 513023dd3b8Sopenharmony_ci <p>See <code><a href='#div'>dividedBy</a></code>.</p> 514023dd3b8Sopenharmony_ci <pre>a = Decimal.div(x, y) 515023dd3b8Sopenharmony_cib = new Decimal(x).div(y) 516023dd3b8Sopenharmony_cia.equals(b) // true</pre> 517023dd3b8Sopenharmony_ci 518023dd3b8Sopenharmony_ci 519023dd3b8Sopenharmony_ci 520023dd3b8Sopenharmony_ci <h5 id="Dexp">exp<code class='inset'>.exp(x) <i>⇒ Decimal</i></code></h5> 521023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 522023dd3b8Sopenharmony_ci <p>See <code><a href='#exp'>naturalExponential</a></code>.</p> 523023dd3b8Sopenharmony_ci <pre>a = Decimal.exp(x) 524023dd3b8Sopenharmony_cib = new Decimal(x).exp() 525023dd3b8Sopenharmony_cia.equals(b) // true</pre> 526023dd3b8Sopenharmony_ci 527023dd3b8Sopenharmony_ci 528023dd3b8Sopenharmony_ci 529023dd3b8Sopenharmony_ci <h5 id="Dfloor">floor<code class='inset'>.floor(x) <i>⇒ Decimal</i></code></h5> 530023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 531023dd3b8Sopenharmony_ci <p>See <code><a href='#floor'>floor</a></code>.</p> 532023dd3b8Sopenharmony_ci <pre>a = Decimal.floor(x) 533023dd3b8Sopenharmony_cib = new Decimal(x).floor() 534023dd3b8Sopenharmony_cia.equals(b) // true</pre> 535023dd3b8Sopenharmony_ci 536023dd3b8Sopenharmony_ci 537023dd3b8Sopenharmony_ci 538023dd3b8Sopenharmony_ci <h5 id="Dhypot"> 539023dd3b8Sopenharmony_ci hypot<code class='inset'>.hypot([x [, y, ...]]) <i>⇒ Decimal</i></code> 540023dd3b8Sopenharmony_ci </h5> 541023dd3b8Sopenharmony_ci <p> 542023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 543023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 544023dd3b8Sopenharmony_ci </p> 545023dd3b8Sopenharmony_ci <p> 546023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the square root of the sum of the squares of the 547023dd3b8Sopenharmony_ci arguments, rounded to <a href='#precision'><code>precision</code></a> significant digits using 548023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 549023dd3b8Sopenharmony_ci </p> 550023dd3b8Sopenharmony_ci <pre>r = Decimal.hypot(x, y)</pre> 551023dd3b8Sopenharmony_ci 552023dd3b8Sopenharmony_ci 553023dd3b8Sopenharmony_ci 554023dd3b8Sopenharmony_ci <h5 id="Dln">ln<code class='inset'>.ln(x) <i>⇒ Decimal</i></code></h5> 555023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 556023dd3b8Sopenharmony_ci <p>See <code><a href='#ln'>naturalLogarithm</a></code>.</p> 557023dd3b8Sopenharmony_ci <pre>a = Decimal.ln(x) 558023dd3b8Sopenharmony_cib = new Decimal(x).ln() 559023dd3b8Sopenharmony_cia.equals(b) // true</pre> 560023dd3b8Sopenharmony_ci 561023dd3b8Sopenharmony_ci 562023dd3b8Sopenharmony_ci 563023dd3b8Sopenharmony_ci <h5 id="DisDecimal"> 564023dd3b8Sopenharmony_ci isDecimal<code class='inset'>.isDecimal(object) <i>⇒ boolean</i></code> 565023dd3b8Sopenharmony_ci </h5> 566023dd3b8Sopenharmony_ci <p><code>object</code>: <i>any</i></p> 567023dd3b8Sopenharmony_ci <p> 568023dd3b8Sopenharmony_ci Returns <code>true</code> if <code>object</code> is a Decimal instance (where Decimal is any 569023dd3b8Sopenharmony_ci Decimal constructor), or <code>false</code> if it is not. 570023dd3b8Sopenharmony_ci </p> 571023dd3b8Sopenharmony_ci <pre>a = new Decimal(1) 572023dd3b8Sopenharmony_cib = {} 573023dd3b8Sopenharmony_cia instanceof Decimal // true 574023dd3b8Sopenharmony_ciDecimal.isDecimal(a) // true 575023dd3b8Sopenharmony_ciDecimal.isDecimal(b) // false</pre> 576023dd3b8Sopenharmony_ci 577023dd3b8Sopenharmony_ci 578023dd3b8Sopenharmony_ci 579023dd3b8Sopenharmony_ci <h5 id="Dlog">log<code class='inset'>.log(x [, base]) <i>⇒ Decimal</i></code></h5> 580023dd3b8Sopenharmony_ci <p> 581023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 582023dd3b8Sopenharmony_ci <code>base</code>: <i>number|string|Decimal</i> 583023dd3b8Sopenharmony_ci </p> 584023dd3b8Sopenharmony_ci <p>See <code><a href='#log'>logarithm</a></code>.</p> 585023dd3b8Sopenharmony_ci <p> 586023dd3b8Sopenharmony_ci The default base is <code>10</code>, which is not the same as JavaScript's 587023dd3b8Sopenharmony_ci <code>Math.log()</code>, which returns the natural logarithm (base <code>e</code>). 588023dd3b8Sopenharmony_ci </p> 589023dd3b8Sopenharmony_ci <pre>a = Decimal.log(x, y) 590023dd3b8Sopenharmony_cib = new Decimal(x).log(y) 591023dd3b8Sopenharmony_cia.equals(b) // true</pre> 592023dd3b8Sopenharmony_ci 593023dd3b8Sopenharmony_ci 594023dd3b8Sopenharmony_ci 595023dd3b8Sopenharmony_ci <h5 id="Dlog2">log2<code class='inset'>.log2(x) <i>⇒ Decimal</i></code></h5> 596023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 597023dd3b8Sopenharmony_ci <p> 598023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the base <code>2</code> logarithm of <code>x</code>, 599023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 600023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 601023dd3b8Sopenharmony_ci </p> 602023dd3b8Sopenharmony_ci <pre>r = Decimal.log2(x)</pre> 603023dd3b8Sopenharmony_ci 604023dd3b8Sopenharmony_ci 605023dd3b8Sopenharmony_ci 606023dd3b8Sopenharmony_ci <h5 id="Dlog10">log10<code class='inset'>.log10(x) <i>⇒ Decimal</i></code></h5> 607023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 608023dd3b8Sopenharmony_ci <p> 609023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the base <code>10</code> logarithm of <code>x</code>, 610023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 611023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 612023dd3b8Sopenharmony_ci </p> 613023dd3b8Sopenharmony_ci <pre>r = Decimal.log10(x)</pre> 614023dd3b8Sopenharmony_ci 615023dd3b8Sopenharmony_ci 616023dd3b8Sopenharmony_ci 617023dd3b8Sopenharmony_ci <h5 id="Dmax"> 618023dd3b8Sopenharmony_ci max<code class='inset'>.max(x [, y, ...]) <i>⇒ Decimal</i></code> 619023dd3b8Sopenharmony_ci </h5> 620023dd3b8Sopenharmony_ci <p> 621023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 622023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 623023dd3b8Sopenharmony_ci </p> 624023dd3b8Sopenharmony_ci <p>Returns a new Decimal whose value is the maximum of the <code>arguments</code>.</p> 625023dd3b8Sopenharmony_ci <pre>r = Decimal.max(x, y, z)</pre> 626023dd3b8Sopenharmony_ci 627023dd3b8Sopenharmony_ci 628023dd3b8Sopenharmony_ci 629023dd3b8Sopenharmony_ci <h5 id="Dmin"> 630023dd3b8Sopenharmony_ci min<code class='inset'>.min(x [, y, ...]) <i>⇒ Decimal</i></code> 631023dd3b8Sopenharmony_ci </h5> 632023dd3b8Sopenharmony_ci <p> 633023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 634023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 635023dd3b8Sopenharmony_ci </p> 636023dd3b8Sopenharmony_ci <p>Returns a new Decimal whose value is the minimum of the <code>arguments</code>.</p> 637023dd3b8Sopenharmony_ci <pre>r = Decimal.min(x, y, z)</pre> 638023dd3b8Sopenharmony_ci 639023dd3b8Sopenharmony_ci 640023dd3b8Sopenharmony_ci 641023dd3b8Sopenharmony_ci <h5 id="Dmod">mod<code class='inset'>.mod(x, y) <i>⇒ Decimal</i></code></h5> 642023dd3b8Sopenharmony_ci <p> 643023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 644023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 645023dd3b8Sopenharmony_ci </p> 646023dd3b8Sopenharmony_ci <p>See <code><a href='#mod'>modulo</a></code>.</p> 647023dd3b8Sopenharmony_ci <pre>a = Decimal.mod(x, y) 648023dd3b8Sopenharmony_cib = new Decimal(x).mod(y) 649023dd3b8Sopenharmony_cia.equals(b) // true</pre> 650023dd3b8Sopenharmony_ci 651023dd3b8Sopenharmony_ci 652023dd3b8Sopenharmony_ci 653023dd3b8Sopenharmony_ci <h5 id="Dmul">mul<code class='inset'>.mul(x, y) <i>⇒ Decimal</i></code></h5> 654023dd3b8Sopenharmony_ci <p> 655023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 656023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 657023dd3b8Sopenharmony_ci </p> 658023dd3b8Sopenharmony_ci <p>See <code><a href='#mul'>times</a></code>.</p> 659023dd3b8Sopenharmony_ci <pre>a = Decimal.mul(x, y) 660023dd3b8Sopenharmony_cib = new Decimal(x).mul(y) 661023dd3b8Sopenharmony_cia.equals(b) // true</pre> 662023dd3b8Sopenharmony_ci 663023dd3b8Sopenharmony_ci 664023dd3b8Sopenharmony_ci 665023dd3b8Sopenharmony_ci <h5 id="DnoConflict"> 666023dd3b8Sopenharmony_ci noConflict<code class='inset'>.noConflict() <i>⇒ Decimal constructor</i></code> 667023dd3b8Sopenharmony_ci </h5> 668023dd3b8Sopenharmony_ci <p><i>Browsers only.</i></p> 669023dd3b8Sopenharmony_ci <p> 670023dd3b8Sopenharmony_ci Reverts the <code>Decimal</code> variable to the value it had before this library was loaded 671023dd3b8Sopenharmony_ci and returns a reference to the original Decimal constructor so it can be assigned to a 672023dd3b8Sopenharmony_ci variable with a different name. 673023dd3b8Sopenharmony_ci </p> 674023dd3b8Sopenharmony_ci <pre> 675023dd3b8Sopenharmony_ci<script> Decimal = 1 </script> 676023dd3b8Sopenharmony_ci<script src='/path/to/decimal.js'></script> 677023dd3b8Sopenharmony_ci<script> 678023dd3b8Sopenharmony_ci a = new Decimal(2) // '2' 679023dd3b8Sopenharmony_ci D = Decimal.noConflict() 680023dd3b8Sopenharmony_ci Decimal // 1 681023dd3b8Sopenharmony_ci b = new D(3) // '3' 682023dd3b8Sopenharmony_ci</script></pre> 683023dd3b8Sopenharmony_ci 684023dd3b8Sopenharmony_ci 685023dd3b8Sopenharmony_ci 686023dd3b8Sopenharmony_ci <h5 id="Dpow">pow<code class='inset'>.pow(base, exponent) <i>⇒ Decimal</i></code></h5> 687023dd3b8Sopenharmony_ci <p> 688023dd3b8Sopenharmony_ci <code>base</code>: <i>number|string|Decimal</i><br /> 689023dd3b8Sopenharmony_ci <code>exponent</code>: <i>number|string|Decimal</i> 690023dd3b8Sopenharmony_ci </p> 691023dd3b8Sopenharmony_ci <p>See <code><a href="#pow">toPower</a></code>.</p> 692023dd3b8Sopenharmony_ci <pre>a = Decimal.pow(x, y) 693023dd3b8Sopenharmony_cib = new Decimal(x).pow(y) 694023dd3b8Sopenharmony_cia.equals(b) // true</pre> 695023dd3b8Sopenharmony_ci 696023dd3b8Sopenharmony_ci 697023dd3b8Sopenharmony_ci 698023dd3b8Sopenharmony_ci <h5 id="Drandom"> 699023dd3b8Sopenharmony_ci random<code class='inset'>.random([dp]) <i>⇒ Decimal</i></code> 700023dd3b8Sopenharmony_ci </h5> 701023dd3b8Sopenharmony_ci <p><code>dp</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive</p> 702023dd3b8Sopenharmony_ci <p> 703023dd3b8Sopenharmony_ci Returns a new Decimal with a pseudo-random value equal to or greater than <code>0</code> and 704023dd3b8Sopenharmony_ci less than <code>1</code>. 705023dd3b8Sopenharmony_ci </p> 706023dd3b8Sopenharmony_ci <p> 707023dd3b8Sopenharmony_ci The return value will have <code>dp</code> decimal places (or less if trailing zeros are 708023dd3b8Sopenharmony_ci produced). If <code>dp</code> is omitted then the number of decimal places will 709023dd3b8Sopenharmony_ci default to the current <a href='#precision'><code>precision</code></a> setting. 710023dd3b8Sopenharmony_ci </p> 711023dd3b8Sopenharmony_ci <p> 712023dd3b8Sopenharmony_ci If the value of <code>this</code> Decimal constructor's 713023dd3b8Sopenharmony_ci <a href='#crypto'><code>crypto</code></a> property is <code>true</code>, and the 714023dd3b8Sopenharmony_ci <code>crypto</code> object is available globally in the host environment, the random digits of 715023dd3b8Sopenharmony_ci the return value are generated by either <code>crypto.getRandomValues</code> (Web Cryptography 716023dd3b8Sopenharmony_ci API in modern browsers) or <code>crypto.randomBytes</code> (Node.js), otherwise, if the the 717023dd3b8Sopenharmony_ci value of the property is <code>false</code> the return value is generated by 718023dd3b8Sopenharmony_ci <code>Math.random</code> (fastest). 719023dd3b8Sopenharmony_ci </p> 720023dd3b8Sopenharmony_ci <p>To make the <code>crypto</code> object available globally in Node.js use</p> 721023dd3b8Sopenharmony_ci <pre>global.crypto = require('crypto')</pre> 722023dd3b8Sopenharmony_ci <p> 723023dd3b8Sopenharmony_ci If the value of <code>this</code> Decimal constructor's 724023dd3b8Sopenharmony_ci <a href='#crypto'><code>crypto</code></a> property is set <code>true</code> and the 725023dd3b8Sopenharmony_ci <code>crypto</code> object and associated method are not available, an exception will be 726023dd3b8Sopenharmony_ci thrown. 727023dd3b8Sopenharmony_ci </p> 728023dd3b8Sopenharmony_ci <p> 729023dd3b8Sopenharmony_ci If one of the <code>crypto</code> methods is used, the value of the returned Decimal should be 730023dd3b8Sopenharmony_ci cryptographically-secure and statistically indistinguishable from a random value. 731023dd3b8Sopenharmony_ci </p> 732023dd3b8Sopenharmony_ci <pre>Decimal.set({ precision: 10 }) 733023dd3b8Sopenharmony_ciDecimal.random() // '0.4117936847' 734023dd3b8Sopenharmony_ciDecimal.random(20) // '0.78193327636914089009'</pre> 735023dd3b8Sopenharmony_ci 736023dd3b8Sopenharmony_ci 737023dd3b8Sopenharmony_ci <h5 id="Dround">round<code class='inset'>.round(x) <i>⇒ Decimal</i></code></h5> 738023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 739023dd3b8Sopenharmony_ci <p>See <code><a href='#round'>round</a></code>.</p> 740023dd3b8Sopenharmony_ci <pre>a = Decimal.round(x) 741023dd3b8Sopenharmony_cib = new Decimal(x).round() 742023dd3b8Sopenharmony_cia.equals(b) // true</pre> 743023dd3b8Sopenharmony_ci 744023dd3b8Sopenharmony_ci 745023dd3b8Sopenharmony_ci 746023dd3b8Sopenharmony_ci <h5 id="Dset">set<code class='inset'>.set(object) <i>⇒ Decimal constructor</i></code></h5> 747023dd3b8Sopenharmony_ci <p><code>object</code>: <i>object</i></p> 748023dd3b8Sopenharmony_ci <p> 749023dd3b8Sopenharmony_ci Configures the 'global' settings for <code>this</code> particular Decimal constructor, i.e. 750023dd3b8Sopenharmony_ci the settings which apply to operations performed on the Decimal instances created by it. 751023dd3b8Sopenharmony_ci </p> 752023dd3b8Sopenharmony_ci <p>Returns <code>this</code> Decimal constructor.</p> 753023dd3b8Sopenharmony_ci <p> 754023dd3b8Sopenharmony_ci The configuration object, <code>object</code>, can contain some or all of the properties 755023dd3b8Sopenharmony_ci described in detail at <a href="#constructor-properties">Properties</a> and shown in the 756023dd3b8Sopenharmony_ci example below. 757023dd3b8Sopenharmony_ci </p> 758023dd3b8Sopenharmony_ci <p> 759023dd3b8Sopenharmony_ci The values of the configuration object properties are checked for validity and then stored as 760023dd3b8Sopenharmony_ci equivalently-named properties of <code>this</code> Decimal constructor. 761023dd3b8Sopenharmony_ci </p> 762023dd3b8Sopenharmony_ci <p> 763023dd3b8Sopenharmony_ci If <code>object</code> has a <code>'defaults'</code> property with value <code>true</code> 764023dd3b8Sopenharmony_ci then any unspecified properties will be reset to their default values. 765023dd3b8Sopenharmony_ci </p> 766023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>object</code> or configuration property value.</p> 767023dd3b8Sopenharmony_ci <pre> 768023dd3b8Sopenharmony_ci// Defaults 769023dd3b8Sopenharmony_ciDecimal.set({ 770023dd3b8Sopenharmony_ci precision: 20, 771023dd3b8Sopenharmony_ci rounding: 4, 772023dd3b8Sopenharmony_ci toExpNeg: -7, 773023dd3b8Sopenharmony_ci toExpPos: 21, 774023dd3b8Sopenharmony_ci maxE: 9e15, 775023dd3b8Sopenharmony_ci minE: -9e15, 776023dd3b8Sopenharmony_ci modulo: 1, 777023dd3b8Sopenharmony_ci crypto: false 778023dd3b8Sopenharmony_ci}) 779023dd3b8Sopenharmony_ci 780023dd3b8Sopenharmony_ci// Reset all properties to their default values 781023dd3b8Sopenharmony_ciDecimal.set({ defaults: true }) 782023dd3b8Sopenharmony_ci 783023dd3b8Sopenharmony_ci// Set precision to 50 and all other properties to their default values 784023dd3b8Sopenharmony_ciDecimal.set({ precision: 50, defaults: true })</pre> 785023dd3b8Sopenharmony_ci <p> 786023dd3b8Sopenharmony_ci The properties of a Decimal constructor can also be set by direct assignment, but that will 787023dd3b8Sopenharmony_ci by-pass the validity checking that this method performs - this is not a problem if the user 788023dd3b8Sopenharmony_ci knows that the assignment is valid. 789023dd3b8Sopenharmony_ci </p> 790023dd3b8Sopenharmony_ci <pre>Decimal.precision = 40</pre> 791023dd3b8Sopenharmony_ci 792023dd3b8Sopenharmony_ci 793023dd3b8Sopenharmony_ci 794023dd3b8Sopenharmony_ci <h5 id="Dsign">sign<code class='inset'>.sign(x) <i>⇒ number</i></code></h5> 795023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 796023dd3b8Sopenharmony_ci <table> 797023dd3b8Sopenharmony_ci <tr><th>Returns</th><th> </th></tr> 798023dd3b8Sopenharmony_ci <tr> 799023dd3b8Sopenharmony_ci <td class='centre'><code>1</code></td> 800023dd3b8Sopenharmony_ci <td>if the value of <code>x</code> is non-zero and its sign is positive</td> 801023dd3b8Sopenharmony_ci </tr> 802023dd3b8Sopenharmony_ci <tr> 803023dd3b8Sopenharmony_ci <td class='centre'><code>-1</code></td> 804023dd3b8Sopenharmony_ci <td>if the value of <code>x</code> is non-zero and its sign is negative</td> 805023dd3b8Sopenharmony_ci </tr> 806023dd3b8Sopenharmony_ci <tr> 807023dd3b8Sopenharmony_ci <td class='centre'><code>0</code></td> 808023dd3b8Sopenharmony_ci <td>if the value of <code>x</code> is positive zero</td> 809023dd3b8Sopenharmony_ci </tr> 810023dd3b8Sopenharmony_ci <tr> 811023dd3b8Sopenharmony_ci <td class='centre'><code>-0</code></td> 812023dd3b8Sopenharmony_ci <td>if the value of <code>x</code> is negative zero</td> 813023dd3b8Sopenharmony_ci </tr> 814023dd3b8Sopenharmony_ci <tr> 815023dd3b8Sopenharmony_ci <td class='centre'><code>NaN</code></td> 816023dd3b8Sopenharmony_ci <td>if the value of <code>x</code> is <code>NaN</code></td> 817023dd3b8Sopenharmony_ci </tr> 818023dd3b8Sopenharmony_ci </table> 819023dd3b8Sopenharmony_ci <pre>r = Decimal.sign(x)</pre> 820023dd3b8Sopenharmony_ci 821023dd3b8Sopenharmony_ci 822023dd3b8Sopenharmony_ci 823023dd3b8Sopenharmony_ci <h5 id="Dsin">sin<code class='inset'>.sin(x) <i>⇒ Decimal</i></code></h5> 824023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 825023dd3b8Sopenharmony_ci <p>See <code><a href='#sin'>sine</a></code>.</p> 826023dd3b8Sopenharmony_ci <pre>a = Decimal.sin(x) 827023dd3b8Sopenharmony_cib = new Decimal(x).sin() 828023dd3b8Sopenharmony_cia.equals(b) // true</pre> 829023dd3b8Sopenharmony_ci 830023dd3b8Sopenharmony_ci 831023dd3b8Sopenharmony_ci 832023dd3b8Sopenharmony_ci <h5 id="Dsinh">sinh<code class='inset'>.sinh(x) <i>⇒ Decimal</i></code></h5> 833023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 834023dd3b8Sopenharmony_ci <p>See <code><a href='#sin'>hyperbolicSine</a></code>.</p> 835023dd3b8Sopenharmony_ci <pre>a = Decimal.sinh(x) 836023dd3b8Sopenharmony_cib = new Decimal(x).sinh() 837023dd3b8Sopenharmony_cia.equals(b) // true</pre> 838023dd3b8Sopenharmony_ci 839023dd3b8Sopenharmony_ci 840023dd3b8Sopenharmony_ci 841023dd3b8Sopenharmony_ci <h5 id="Dsqrt">sqrt<code class='inset'>.sqrt(x) <i>⇒ Decimal</i></code></h5> 842023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 843023dd3b8Sopenharmony_ci <p>See <a href='#sqrt'>squareRoot</a>.</p> 844023dd3b8Sopenharmony_ci <pre>a = Decimal.sqrt(x) 845023dd3b8Sopenharmony_cib = new Decimal(x).sqrt() 846023dd3b8Sopenharmony_cia.equals(b) // true</pre> 847023dd3b8Sopenharmony_ci 848023dd3b8Sopenharmony_ci 849023dd3b8Sopenharmony_ci 850023dd3b8Sopenharmony_ci <h5 id="Dsub">sub<code class='inset'>.sub(x, y) <i>⇒ Decimal</i></code></h5> 851023dd3b8Sopenharmony_ci <p> 852023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 853023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 854023dd3b8Sopenharmony_ci </p> 855023dd3b8Sopenharmony_ci <p>See <code><a href='#sub'>minus</a></code>.</p> 856023dd3b8Sopenharmony_ci <pre>a = Decimal.sub(x, y) 857023dd3b8Sopenharmony_cib = new Decimal(x).sub(y) 858023dd3b8Sopenharmony_cia.equals(b) // true</pre> 859023dd3b8Sopenharmony_ci 860023dd3b8Sopenharmony_ci 861023dd3b8Sopenharmony_ci 862023dd3b8Sopenharmony_ci <h5 id="Dsum">sum<code class='inset'>.sum(x [, y, ...]) <i>⇒ Decimal</i></code></h5> 863023dd3b8Sopenharmony_ci <p> 864023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 865023dd3b8Sopenharmony_ci <code>y</code>: <i>number|string|Decimal</i> 866023dd3b8Sopenharmony_ci </p> 867023dd3b8Sopenharmony_ci <p> 868023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the sum of the <code>arguments</code>, 869023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using 870023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>.<br /> 871023dd3b8Sopenharmony_ci Only the result is rounded, not the intermediate summations. 872023dd3b8Sopenharmony_ci </p> 873023dd3b8Sopenharmony_ci <pre> 874023dd3b8Sopenharmony_cix = 5 875023dd3b8Sopenharmony_ciy = '16' 876023dd3b8Sopenharmony_ciz = new Decimal(-11) 877023dd3b8Sopenharmony_ciDecimal.sum(x, y, z) // '10'</pre> 878023dd3b8Sopenharmony_ci 879023dd3b8Sopenharmony_ci 880023dd3b8Sopenharmony_ci 881023dd3b8Sopenharmony_ci <h5 id="Dtan">tan<code class='inset'>.tan(x) <i>⇒ Decimal</i></code></h5> 882023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 883023dd3b8Sopenharmony_ci <p>See <code><a href='#tan'>tangent</a></code>.</p> 884023dd3b8Sopenharmony_ci <pre>a = Decimal.tan(x) 885023dd3b8Sopenharmony_cib = new Decimal(x).tan() 886023dd3b8Sopenharmony_cia.equals(b) // true</pre> 887023dd3b8Sopenharmony_ci 888023dd3b8Sopenharmony_ci 889023dd3b8Sopenharmony_ci 890023dd3b8Sopenharmony_ci <h5 id="Dtanh">tanh<code class='inset'>.tanh(x) <i>⇒ Decimal</i></code></h5> 891023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 892023dd3b8Sopenharmony_ci <p>See <code><a href='#tan'>hyperbolicTangent</a></code>.</p> 893023dd3b8Sopenharmony_ci <pre>a = Decimal.tanh(x) 894023dd3b8Sopenharmony_cib = new Decimal(x).tanh() 895023dd3b8Sopenharmony_cia.equals(b) // true</pre> 896023dd3b8Sopenharmony_ci 897023dd3b8Sopenharmony_ci 898023dd3b8Sopenharmony_ci 899023dd3b8Sopenharmony_ci <h5 id="Dtrunc">trunc<code class='inset'>.trunc(x) <i>⇒ Decimal</i></code></h5> 900023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 901023dd3b8Sopenharmony_ci <p>See <code><a href='#trunc'>truncated</a></code>.</p> 902023dd3b8Sopenharmony_ci <pre>a = Decimal.trunc(x) 903023dd3b8Sopenharmony_cib = new Decimal(x).trunc() 904023dd3b8Sopenharmony_cia.equals(b) // true</pre> 905023dd3b8Sopenharmony_ci 906023dd3b8Sopenharmony_ci 907023dd3b8Sopenharmony_ci 908023dd3b8Sopenharmony_ci 909023dd3b8Sopenharmony_ci <h4 id="constructor-properties">Properties</h4> 910023dd3b8Sopenharmony_ci <p>The properties of a Decimal constructor.</p> 911023dd3b8Sopenharmony_ci 912023dd3b8Sopenharmony_ci 913023dd3b8Sopenharmony_ci 914023dd3b8Sopenharmony_ci <h6 id='configProps'>Configuration properties</h6> 915023dd3b8Sopenharmony_ci <p> 916023dd3b8Sopenharmony_ci The values of the configuration properties <a href='#precision'><code>precision</code></a>, 917023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a>, <a href='#minE'><code>minE</code></a>, 918023dd3b8Sopenharmony_ci <a href='#maxE'><code>maxE</code></a>, <a href='#toExpNeg'><code>toExpNeg</code></a>, 919023dd3b8Sopenharmony_ci <a href='#toExpPos'><code>toExpPos</code></a>, <a href='#modulo'><code>modulo</code></a>, and 920023dd3b8Sopenharmony_ci <a href='#crypto'><code>crypto</code></a> are set using the 921023dd3b8Sopenharmony_ci <a href='#Dset'><code>set</code></a> method. 922023dd3b8Sopenharmony_ci </p> 923023dd3b8Sopenharmony_ci <p> 924023dd3b8Sopenharmony_ci As simple object properties they can be set directly without using 925023dd3b8Sopenharmony_ci <a href='#Dset'><code>set</code></a>, and it is fine to do so, but the values assigned 926023dd3b8Sopenharmony_ci will not then be checked for validity. For example: 927023dd3b8Sopenharmony_ci </p> 928023dd3b8Sopenharmony_ci <pre>Decimal.set({ precision: 0 }) 929023dd3b8Sopenharmony_ci// '[DecimalError] Invalid argument: precision: 0' 930023dd3b8Sopenharmony_ci 931023dd3b8Sopenharmony_ciDecimal.precision = 0 932023dd3b8Sopenharmony_ci// No error is thrown and the results of calculations are unreliable</pre> 933023dd3b8Sopenharmony_ci 934023dd3b8Sopenharmony_ci 935023dd3b8Sopenharmony_ci 936023dd3b8Sopenharmony_ci <h5 id="precision">precision</h5> 937023dd3b8Sopenharmony_ci <p> 938023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>1</code> to <code>1e+9</code> inclusive<br /> 939023dd3b8Sopenharmony_ci Default value: <code>20</code> 940023dd3b8Sopenharmony_ci </p> 941023dd3b8Sopenharmony_ci <p>The <i>maximum</i> number of significant digits of the result of an operation.</p> 942023dd3b8Sopenharmony_ci <p> 943023dd3b8Sopenharmony_ci All functions which return a Decimal will round the return value to <code>precision</code> 944023dd3b8Sopenharmony_ci significant digits except <a href='#decimal'><code>Decimal</code></a>, 945023dd3b8Sopenharmony_ci <a href='#abs'><code>absoluteValue</code></a>, 946023dd3b8Sopenharmony_ci <a href='#ceil'><code>ceil</code></a>, 947023dd3b8Sopenharmony_ci <a href='#clamp'><code>clampedTo</code></a>, 948023dd3b8Sopenharmony_ci <a href='#floor'><code>floor</code></a>, 949023dd3b8Sopenharmony_ci <a href='#neg'><code>negated</code></a>, 950023dd3b8Sopenharmony_ci <a href='#round'><code>round</code></a>, 951023dd3b8Sopenharmony_ci <a href='#toDP'><code>toDecimalPlaces</code></a>, 952023dd3b8Sopenharmony_ci <a href='#toNearest'><code>toNearest</code></a> and 953023dd3b8Sopenharmony_ci <a href='#trunc'><code>truncated</code></a>. 954023dd3b8Sopenharmony_ci </p> 955023dd3b8Sopenharmony_ci <p> 956023dd3b8Sopenharmony_ci See <code><a href='#Pi'>Pi</a></code> for the precision limit of the trigonometric methods. 957023dd3b8Sopenharmony_ci </p> 958023dd3b8Sopenharmony_ci <pre>Decimal.set({ precision: 5 }) 959023dd3b8Sopenharmony_ciDecimal.precision // 5</pre> 960023dd3b8Sopenharmony_ci 961023dd3b8Sopenharmony_ci 962023dd3b8Sopenharmony_ci 963023dd3b8Sopenharmony_ci <h5 id="rounding">rounding</h5> 964023dd3b8Sopenharmony_ci <p> 965023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive<br /> 966023dd3b8Sopenharmony_ci Default value: <code>4</code> <a href="#modes">(<code>ROUND_HALF_UP</code>)</a> 967023dd3b8Sopenharmony_ci </p> 968023dd3b8Sopenharmony_ci <p> 969023dd3b8Sopenharmony_ci The default rounding mode used when rounding the result of an operation to 970023dd3b8Sopenharmony_ci <code><a href='#precision'>precision</a></code> significant digits, and when rounding the 971023dd3b8Sopenharmony_ci return value of the <a href='#round'><code>round</code></a>, 972023dd3b8Sopenharmony_ci <a href='#toBinary'><code>toBinary</code></a>, 973023dd3b8Sopenharmony_ci <a href='#toDP'><code>toDecimalPlaces</code></a>, 974023dd3b8Sopenharmony_ci <a href='#toExponential'><code>toExponential</code></a>, 975023dd3b8Sopenharmony_ci <a href='#toFixed'><code>toFixed</code></a>, 976023dd3b8Sopenharmony_ci <a href='#toHexadecimal'><code>toHexadecimal</code></a>, 977023dd3b8Sopenharmony_ci <a href='#toNearest'><code>toNearest</code></a>, 978023dd3b8Sopenharmony_ci <a href='#toOctal'><code>toOctal</code></a>, 979023dd3b8Sopenharmony_ci <a href='#toPrecision'><code>toPrecision</code></a> and 980023dd3b8Sopenharmony_ci <a href='#toSD'><code>toSignificantDigits</code></a> methods. 981023dd3b8Sopenharmony_ci </p> 982023dd3b8Sopenharmony_ci <p> 983023dd3b8Sopenharmony_ci The <a href='#modes'>rounding modes</a> are available as enumerated properties of the 984023dd3b8Sopenharmony_ci constructor. 985023dd3b8Sopenharmony_ci </p> 986023dd3b8Sopenharmony_ci <pre>Decimal.set({ rounding: Decimal.ROUND_UP }) 987023dd3b8Sopenharmony_ciDecimal.set({ rounding: 0 }) // equivalent 988023dd3b8Sopenharmony_ciDecimal.rounding // 0</pre> 989023dd3b8Sopenharmony_ci 990023dd3b8Sopenharmony_ci 991023dd3b8Sopenharmony_ci 992023dd3b8Sopenharmony_ci <h5 id="minE">minE</h5> 993023dd3b8Sopenharmony_ci <p> 994023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>-9e15</code> to <code>0</code> inclusive<br /> 995023dd3b8Sopenharmony_ci Default value: <code>-9e15</code> 996023dd3b8Sopenharmony_ci </p> 997023dd3b8Sopenharmony_ci <p> 998023dd3b8Sopenharmony_ci The negative exponent limit, i.e. the exponent value below which underflow to zero occurs. 999023dd3b8Sopenharmony_ci </p> 1000023dd3b8Sopenharmony_ci <p> 1001023dd3b8Sopenharmony_ci If the <code>Decimal</code> to be returned by a calculation would have an exponent lower than 1002023dd3b8Sopenharmony_ci <code>minE</code> then the value of that <code>Decimal</code> becomes zero. 1003023dd3b8Sopenharmony_ci <p> 1004023dd3b8Sopenharmony_ci JavaScript numbers underflow to zero for exponents below <code>-324</code>. 1005023dd3b8Sopenharmony_ci </p> 1006023dd3b8Sopenharmony_ci <pre>Decimal.set({ minE: -500 }) 1007023dd3b8Sopenharmony_ciDecimal.minE // -500 1008023dd3b8Sopenharmony_cinew Decimal('1e-500') // '1e-500' 1009023dd3b8Sopenharmony_cinew Decimal('9.9e-501') // '0' 1010023dd3b8Sopenharmony_ci 1011023dd3b8Sopenharmony_ciDecimal.set({ minE: -3 }) 1012023dd3b8Sopenharmony_cinew Decimal(0.001) // '0.001' e is -3 1013023dd3b8Sopenharmony_cinew Decimal(0.0001) // '0' e is -4</pre> 1014023dd3b8Sopenharmony_ci <p> 1015023dd3b8Sopenharmony_ci The smallest possible magnitude of a non-zero Decimal is <code>1e-9000000000000000</code> 1016023dd3b8Sopenharmony_ci </p> 1017023dd3b8Sopenharmony_ci 1018023dd3b8Sopenharmony_ci 1019023dd3b8Sopenharmony_ci 1020023dd3b8Sopenharmony_ci <h5 id="maxE">maxE</h5> 1021023dd3b8Sopenharmony_ci <p> 1022023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>0</code> to <code>9e15</code> inclusive<br /> 1023023dd3b8Sopenharmony_ci Default value: <code>9e15</code> 1024023dd3b8Sopenharmony_ci </p> 1025023dd3b8Sopenharmony_ci <p> 1026023dd3b8Sopenharmony_ci The positive exponent limit, i.e. the exponent value above which overflow to 1027023dd3b8Sopenharmony_ci <code>Infinity</code> occurs. 1028023dd3b8Sopenharmony_ci </p> 1029023dd3b8Sopenharmony_ci <p> 1030023dd3b8Sopenharmony_ci If the <code>Decimal</code> to be returned by a calculation would have an exponent higher than 1031023dd3b8Sopenharmony_ci <code>maxE</code> then the value of that <code>Decimal</code> becomes <code>Infinity</code>. 1032023dd3b8Sopenharmony_ci <p> 1033023dd3b8Sopenharmony_ci JavaScript numbers overflow to <code>Infinity</code> for exponents above <code>308</code>. 1034023dd3b8Sopenharmony_ci </p> 1035023dd3b8Sopenharmony_ci <pre>Decimal.set({ maxE: 500 }) 1036023dd3b8Sopenharmony_ciDecimal.maxE // 500 1037023dd3b8Sopenharmony_cinew Decimal('9.999e500') // '9.999e+500' 1038023dd3b8Sopenharmony_cinew Decimal('1e501') // 'Infinity' 1039023dd3b8Sopenharmony_ci 1040023dd3b8Sopenharmony_ciDecimal.set({ maxE: 4 }) 1041023dd3b8Sopenharmony_cinew Decimal(99999) // '99999' e is 4 1042023dd3b8Sopenharmony_cinew Decimal(100000) // 'Infinity'</pre> 1043023dd3b8Sopenharmony_ci <p> 1044023dd3b8Sopenharmony_ci The largest possible magnitude of a finite Decimal is <code>9.999...e+9000000000000000</code> 1045023dd3b8Sopenharmony_ci </p> 1046023dd3b8Sopenharmony_ci 1047023dd3b8Sopenharmony_ci 1048023dd3b8Sopenharmony_ci 1049023dd3b8Sopenharmony_ci <h5 id="toExpNeg">toExpNeg</h5> 1050023dd3b8Sopenharmony_ci <p> 1051023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>-9e15</code> to <code>0</code> inclusive<br /> 1052023dd3b8Sopenharmony_ci Default value: <code>-7</code> 1053023dd3b8Sopenharmony_ci </p> 1054023dd3b8Sopenharmony_ci <p> 1055023dd3b8Sopenharmony_ci The negative exponent value at and below which <a href='#toString'><code>toString</code></a> 1056023dd3b8Sopenharmony_ci returns exponential notation. 1057023dd3b8Sopenharmony_ci </p> 1058023dd3b8Sopenharmony_ci <pre>Decimal.set({ toExpNeg: -7 }) 1059023dd3b8Sopenharmony_ciDecimal.toExpNeg // -7 1060023dd3b8Sopenharmony_cinew Decimal(0.00000123) // '0.00000123' e is -6 1061023dd3b8Sopenharmony_cinew Decimal(0.000000123) // '1.23e-7' 1062023dd3b8Sopenharmony_ci 1063023dd3b8Sopenharmony_ci// Always return exponential notation: 1064023dd3b8Sopenharmony_ciDecimal.set({ toExpNeg: 0 })</pre> 1065023dd3b8Sopenharmony_ci <p> 1066023dd3b8Sopenharmony_ci JavaScript numbers use exponential notation for negative exponents of <code>-7</code> and 1067023dd3b8Sopenharmony_ci below. 1068023dd3b8Sopenharmony_ci </p> 1069023dd3b8Sopenharmony_ci <p> 1070023dd3b8Sopenharmony_ci Regardless of the value of <code>toExpNeg</code>, the 1071023dd3b8Sopenharmony_ci <a href='#toFixed'><code>toFixed</code></a> method will always return a value in normal 1072023dd3b8Sopenharmony_ci notation and the <a href='#toExponential'><code>toExponential</code></a> method will always 1073023dd3b8Sopenharmony_ci return a value in exponential form. 1074023dd3b8Sopenharmony_ci </p> 1075023dd3b8Sopenharmony_ci 1076023dd3b8Sopenharmony_ci 1077023dd3b8Sopenharmony_ci 1078023dd3b8Sopenharmony_ci <h5 id="toExpPos">toExpPos</h5> 1079023dd3b8Sopenharmony_ci <p> 1080023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>0</code> to <code>9e15</code> inclusive<br /> 1081023dd3b8Sopenharmony_ci Default value: <code>20</code> 1082023dd3b8Sopenharmony_ci </p> 1083023dd3b8Sopenharmony_ci <p> 1084023dd3b8Sopenharmony_ci The positive exponent value at and above which <a href='#toString'><code>toString</code></a> 1085023dd3b8Sopenharmony_ci returns exponential notation. 1086023dd3b8Sopenharmony_ci </p> 1087023dd3b8Sopenharmony_ci <pre>Decimal.set({ toExpPos: 2 }) 1088023dd3b8Sopenharmony_ciDecimal.toExpPos // 2 1089023dd3b8Sopenharmony_cinew Decimal(12.3) // '12.3' e is 1 1090023dd3b8Sopenharmony_cinew Decimal(123) // '1.23e+2' 1091023dd3b8Sopenharmony_ci 1092023dd3b8Sopenharmony_ci// Always return exponential notation: 1093023dd3b8Sopenharmony_ciDecimal.set({ toExpPos: 0 })</pre> 1094023dd3b8Sopenharmony_ci <p> 1095023dd3b8Sopenharmony_ci JavaScript numbers use exponential notation for positive exponents of <code>20</code> and 1096023dd3b8Sopenharmony_ci above. 1097023dd3b8Sopenharmony_ci </p> 1098023dd3b8Sopenharmony_ci <p> 1099023dd3b8Sopenharmony_ci Regardless of the value of <code>toExpPos</code>, the 1100023dd3b8Sopenharmony_ci <a href='#toFixed'><code>toFixed</code></a> method will always return a value in normal 1101023dd3b8Sopenharmony_ci notation and the <a href='#toExponential'><code>toExponential</code></a> method will always 1102023dd3b8Sopenharmony_ci return a value in exponential form. 1103023dd3b8Sopenharmony_ci </p> 1104023dd3b8Sopenharmony_ci 1105023dd3b8Sopenharmony_ci 1106023dd3b8Sopenharmony_ci 1107023dd3b8Sopenharmony_ci <h5 id="modulo">modulo</h5> 1108023dd3b8Sopenharmony_ci <p> 1109023dd3b8Sopenharmony_ci <i>number</i>: integer, <code>0</code> to <code>9</code> inclusive<br /> 1110023dd3b8Sopenharmony_ci Default value: <code>1</code> (<code>ROUND_DOWN</code>) 1111023dd3b8Sopenharmony_ci </p> 1112023dd3b8Sopenharmony_ci <p>The modulo mode used when calculating the modulus: <code>a mod n</code>.</p> 1113023dd3b8Sopenharmony_ci <p> 1114023dd3b8Sopenharmony_ci The quotient, <code>q = a / n</code>, is calculated according to the 1115023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a> mode that corresponds to the chosen 1116023dd3b8Sopenharmony_ci <code>modulo</code> mode. 1117023dd3b8Sopenharmony_ci </p> 1118023dd3b8Sopenharmony_ci <p>The remainder, <code>r</code>, is calculated as: <code>r = a - n * q</code>.</p> 1119023dd3b8Sopenharmony_ci <p> 1120023dd3b8Sopenharmony_ci The modes that are most commonly used for the modulus/remainder operation are shown in the 1121023dd3b8Sopenharmony_ci following table. Although the other <a href='#rounding'><code>rounding</code></a> modes can 1122023dd3b8Sopenharmony_ci be used, they may not give useful results. 1123023dd3b8Sopenharmony_ci </p> 1124023dd3b8Sopenharmony_ci <table> 1125023dd3b8Sopenharmony_ci <tr><th>Property</th><th>Value</th><th>Description</th></tr> 1126023dd3b8Sopenharmony_ci <tr> 1127023dd3b8Sopenharmony_ci <td>ROUND_UP</td><td class='centre'>0</td> 1128023dd3b8Sopenharmony_ci <td>The remainder is positive if the dividend is negative, else is negative</td> 1129023dd3b8Sopenharmony_ci </tr> 1130023dd3b8Sopenharmony_ci <tr> 1131023dd3b8Sopenharmony_ci <td>ROUND_DOWN</td><td class='centre'>1</td> 1132023dd3b8Sopenharmony_ci <td> 1133023dd3b8Sopenharmony_ci The remainder has the same sign as the dividend.<br /> 1134023dd3b8Sopenharmony_ci This uses truncating division and matches the behaviour of JavaScript's remainder 1135023dd3b8Sopenharmony_ci operator <code>%</code>. 1136023dd3b8Sopenharmony_ci </td> 1137023dd3b8Sopenharmony_ci </tr> 1138023dd3b8Sopenharmony_ci <tr> 1139023dd3b8Sopenharmony_ci <td>ROUND_FLOOR</td><td class='centre'>3</td> 1140023dd3b8Sopenharmony_ci <td> 1141023dd3b8Sopenharmony_ci The remainder has the same sign as the divisor.<br /> 1142023dd3b8Sopenharmony_ci (This matches Python's <code>%</code> operator) 1143023dd3b8Sopenharmony_ci </td> 1144023dd3b8Sopenharmony_ci </tr> 1145023dd3b8Sopenharmony_ci <tr> 1146023dd3b8Sopenharmony_ci <td>ROUND_HALF_EVEN</td><td class='centre'>6</td> 1147023dd3b8Sopenharmony_ci <td>The <i>IEEE 754</i> remainder function</td> 1148023dd3b8Sopenharmony_ci </tr> 1149023dd3b8Sopenharmony_ci <tr> 1150023dd3b8Sopenharmony_ci <td>EUCLID</td><td class='centre'>9</td> 1151023dd3b8Sopenharmony_ci <td> 1152023dd3b8Sopenharmony_ci The remainder is always positive.<br /> 1153023dd3b8Sopenharmony_ci Euclidian division: <code>q = sign(x) * floor(a / abs(x))</code>. 1154023dd3b8Sopenharmony_ci </td> 1155023dd3b8Sopenharmony_ci </tr> 1156023dd3b8Sopenharmony_ci </table> 1157023dd3b8Sopenharmony_ci <p> 1158023dd3b8Sopenharmony_ci The rounding/modulo modes are available as enumerated properties of the Decimal constructor. 1159023dd3b8Sopenharmony_ci </p> 1160023dd3b8Sopenharmony_ci <pre>Decimal.set({ modulo: Decimal.EUCLID }) 1161023dd3b8Sopenharmony_ciDecimal.set({ modulo: 9 }) // equivalent 1162023dd3b8Sopenharmony_ciDecimal.modulo // 9</pre> 1163023dd3b8Sopenharmony_ci 1164023dd3b8Sopenharmony_ci 1165023dd3b8Sopenharmony_ci 1166023dd3b8Sopenharmony_ci <h5 id="crypto">crypto</h5> 1167023dd3b8Sopenharmony_ci <p> 1168023dd3b8Sopenharmony_ci <i>boolean</i>: <code>true/false</code><br /> Default value: <code>false</code> 1169023dd3b8Sopenharmony_ci </p> 1170023dd3b8Sopenharmony_ci <p> 1171023dd3b8Sopenharmony_ci The value that determines whether cryptographically-secure pseudo-random number generation is 1172023dd3b8Sopenharmony_ci used. 1173023dd3b8Sopenharmony_ci </p> 1174023dd3b8Sopenharmony_ci <p>See <a href='#Drandom'><code>random</code></a>.</p> 1175023dd3b8Sopenharmony_ci <pre> 1176023dd3b8Sopenharmony_ci// Node.js 1177023dd3b8Sopenharmony_ciglobal.crypto = require('crypto') 1178023dd3b8Sopenharmony_ci 1179023dd3b8Sopenharmony_ciDecimal.crypto // false 1180023dd3b8Sopenharmony_ciDecimal.set({ crypto: true }) 1181023dd3b8Sopenharmony_ciDecimal.crypto // true</pre> 1182023dd3b8Sopenharmony_ci 1183023dd3b8Sopenharmony_ci 1184023dd3b8Sopenharmony_ci 1185023dd3b8Sopenharmony_ci <h6 id="modes">Rounding modes</h6> 1186023dd3b8Sopenharmony_ci <p> 1187023dd3b8Sopenharmony_ci The library's enumerated rounding modes are stored as properties of the Decimal constructor. 1188023dd3b8Sopenharmony_ci <br />They are not referenced internally by the library itself. 1189023dd3b8Sopenharmony_ci </p> 1190023dd3b8Sopenharmony_ci <p>Rounding modes 0 to 6 (inclusive) are the same as those of Java's BigDecimal class.</p> 1191023dd3b8Sopenharmony_ci <table> 1192023dd3b8Sopenharmony_ci <tr><th>Property</th><th>Value</th><th>Description</th></tr> 1193023dd3b8Sopenharmony_ci <tr><td><b>ROUND_UP</b></td><td class='centre'>0</td><td>Rounds away from zero</td></tr> 1194023dd3b8Sopenharmony_ci <tr><td><b>ROUND_DOWN</b></td><td class='centre'>1</td><td>Rounds towards zero</td></tr> 1195023dd3b8Sopenharmony_ci <tr><td><b>ROUND_CEIL</b></td><td class='centre'>2</td><td>Rounds towards Infinity</td></tr> 1196023dd3b8Sopenharmony_ci <tr><td><b>ROUND_FLOOR</b></td><td class='centre'>3</td><td>Rounds towards -Infinity</td></tr> 1197023dd3b8Sopenharmony_ci <tr> 1198023dd3b8Sopenharmony_ci <td><b>ROUND_HALF_UP</b></td><td class='centre'>4</td> 1199023dd3b8Sopenharmony_ci <td>Rounds towards nearest neighbour.<br />If equidistant, rounds away from zero</td> 1200023dd3b8Sopenharmony_ci </tr> 1201023dd3b8Sopenharmony_ci <tr> 1202023dd3b8Sopenharmony_ci <td><b>ROUND_HALF_DOWN</b></td><td class='centre'>5</td> 1203023dd3b8Sopenharmony_ci <td>Rounds towards nearest neighbour.<br />If equidistant, rounds towards zero</td> 1204023dd3b8Sopenharmony_ci </tr> 1205023dd3b8Sopenharmony_ci <tr> 1206023dd3b8Sopenharmony_ci <td><b>ROUND_HALF_EVEN</b></td><td class='centre'>6</td> 1207023dd3b8Sopenharmony_ci <td> 1208023dd3b8Sopenharmony_ci Rounds towards nearest neighbour.<br />If equidistant, rounds towards even neighbour 1209023dd3b8Sopenharmony_ci </td> 1210023dd3b8Sopenharmony_ci </tr> 1211023dd3b8Sopenharmony_ci <tr> 1212023dd3b8Sopenharmony_ci <td><b>ROUND_HALF_CEIL</b></td><td class='centre'>7</td> 1213023dd3b8Sopenharmony_ci <td>Rounds towards nearest neighbour.<br />If equidistant, rounds towards Infinity</td> 1214023dd3b8Sopenharmony_ci </tr> 1215023dd3b8Sopenharmony_ci <tr> 1216023dd3b8Sopenharmony_ci <td><b>ROUND_HALF_FLOOR</b></td><td class='centre'>8</td> 1217023dd3b8Sopenharmony_ci <td>Rounds towards nearest neighbour.<br />If equidistant, rounds towards -Infinity</td> 1218023dd3b8Sopenharmony_ci </tr> 1219023dd3b8Sopenharmony_ci <tr> 1220023dd3b8Sopenharmony_ci <td><b>EUCLID</b></td><td class='centre'>9</td> 1221023dd3b8Sopenharmony_ci <td>Not a rounding mode, see <a href='#modulo'>modulo</a></td> 1222023dd3b8Sopenharmony_ci </tr> 1223023dd3b8Sopenharmony_ci </table> 1224023dd3b8Sopenharmony_ci <pre>Decimal.set({ rounding: Decimal.ROUND_CEIL }) 1225023dd3b8Sopenharmony_ciDecimal.set({ rounding: 2 }) // equivalent 1226023dd3b8Sopenharmony_ciDecimal.rounding // 2</pre> 1227023dd3b8Sopenharmony_ci 1228023dd3b8Sopenharmony_ci 1229023dd3b8Sopenharmony_ci 1230023dd3b8Sopenharmony_ci 1231023dd3b8Sopenharmony_ci <h3>INSTANCE</h3> 1232023dd3b8Sopenharmony_ci 1233023dd3b8Sopenharmony_ci <h4 id="prototype-methods">Methods</h4> 1234023dd3b8Sopenharmony_ci <p>The methods inherited by a Decimal instance from its constructor's prototype object.</p> 1235023dd3b8Sopenharmony_ci <p>A Decimal instance is immutable in the sense that it is not changed by its methods.</p> 1236023dd3b8Sopenharmony_ci <p>Methods that return a Decimal can be chained:</p> 1237023dd3b8Sopenharmony_ci <pre>x = new Decimal(2).times('999.999999999999999').dividedBy(4).ceil()</pre> 1238023dd3b8Sopenharmony_ci <p>Methods do not round their arguments before execution.</p> 1239023dd3b8Sopenharmony_ci <p> 1240023dd3b8Sopenharmony_ci The treatment of <code>±0</code>, <code>±Infinity</code> and <code>NaN</code> 1241023dd3b8Sopenharmony_ci is consistent with how JavaScript treats these values. 1242023dd3b8Sopenharmony_ci </p> 1243023dd3b8Sopenharmony_ci <p> 1244023dd3b8Sopenharmony_ci Many method names have a shorter alias. (Internally, the library always uses the shorter 1245023dd3b8Sopenharmony_ci method names.) 1246023dd3b8Sopenharmony_ci </p> 1247023dd3b8Sopenharmony_ci 1248023dd3b8Sopenharmony_ci 1249023dd3b8Sopenharmony_ci 1250023dd3b8Sopenharmony_ci <h5 id="abs">absoluteValue<code class='inset'>.abs() <i>⇒ Decimal</i></code></h5> 1251023dd3b8Sopenharmony_ci <p> 1252023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the absolute value, i.e. the magnitude, of the value of 1253023dd3b8Sopenharmony_ci this Decimal. 1254023dd3b8Sopenharmony_ci </p> 1255023dd3b8Sopenharmony_ci <p> 1256023dd3b8Sopenharmony_ci The return value is not affected by the value of the 1257023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 1258023dd3b8Sopenharmony_ci </p> 1259023dd3b8Sopenharmony_ci <pre> 1260023dd3b8Sopenharmony_cix = new Decimal(-0.8) 1261023dd3b8Sopenharmony_ciy = x.absoluteValue() // '0.8' 1262023dd3b8Sopenharmony_ciz = y.abs() // '0.8'</pre> 1263023dd3b8Sopenharmony_ci 1264023dd3b8Sopenharmony_ci 1265023dd3b8Sopenharmony_ci 1266023dd3b8Sopenharmony_ci <h5 id="ceil">ceil<code class='inset'>.ceil() <i>⇒ Decimal</i></code></h5> 1267023dd3b8Sopenharmony_ci <p> 1268023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal rounded to a whole number in 1269023dd3b8Sopenharmony_ci the direction of positive <code>Infinity</code>. 1270023dd3b8Sopenharmony_ci </p> 1271023dd3b8Sopenharmony_ci <p> 1272023dd3b8Sopenharmony_ci The return value is not affected by the value of the 1273023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 1274023dd3b8Sopenharmony_ci </p> 1275023dd3b8Sopenharmony_ci <pre> 1276023dd3b8Sopenharmony_cix = new Decimal(1.3) 1277023dd3b8Sopenharmony_cix.ceil() // '2' 1278023dd3b8Sopenharmony_ciy = new Decimal(-1.8) 1279023dd3b8Sopenharmony_ciy.ceil() // '-1'</pre> 1280023dd3b8Sopenharmony_ci 1281023dd3b8Sopenharmony_ci 1282023dd3b8Sopenharmony_ci 1283023dd3b8Sopenharmony_ci <h5 id="clamp">clampedTo<code class='inset'>.clamp(min, max) <i>⇒ Decimal</i></code></h5> 1284023dd3b8Sopenharmony_ci <p> 1285023dd3b8Sopenharmony_ci <code>min</code>: <i>number|string|Decimal</i><br /> 1286023dd3b8Sopenharmony_ci <code>max</code>: <i>number|string|Decimal</i> 1287023dd3b8Sopenharmony_ci </p> 1288023dd3b8Sopenharmony_ci <p> 1289023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal clamped to the range 1290023dd3b8Sopenharmony_ci delineated by <code>min</code> and <code>max</code>. 1291023dd3b8Sopenharmony_ci </p> 1292023dd3b8Sopenharmony_ci <p> 1293023dd3b8Sopenharmony_ci The return value is not affected by the value of the 1294023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 1295023dd3b8Sopenharmony_ci </p> 1296023dd3b8Sopenharmony_ci <pre> 1297023dd3b8Sopenharmony_cix = new Decimal(5) 1298023dd3b8Sopenharmony_cimin = new Decimal(100) 1299023dd3b8Sopenharmony_cimax = new Decimal(Infinity) 1300023dd3b8Sopenharmony_cix.clampedTo(min, max) // '100' 1301023dd3b8Sopenharmony_cix.clamp(-10, -0.1) // '-0.1'</pre> 1302023dd3b8Sopenharmony_ci 1303023dd3b8Sopenharmony_ci 1304023dd3b8Sopenharmony_ci 1305023dd3b8Sopenharmony_ci <h5 id="cmp">comparedTo<code class='inset'>.cmp(x) <i>⇒ number</i></code></h5> 1306023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1307023dd3b8Sopenharmony_ci <table> 1308023dd3b8Sopenharmony_ci <tr><th>Returns</th><th> </th></tr> 1309023dd3b8Sopenharmony_ci <tr> 1310023dd3b8Sopenharmony_ci <td class='centre'><code>1</code></td> 1311023dd3b8Sopenharmony_ci <td>if the value of this Decimal is greater than the value of <code>x</code></td> 1312023dd3b8Sopenharmony_ci </tr> 1313023dd3b8Sopenharmony_ci <tr> 1314023dd3b8Sopenharmony_ci <td class='centre'><code>-1</code></td> 1315023dd3b8Sopenharmony_ci <td>if the value of this Decimal is less than the value of <code>x</code></td> 1316023dd3b8Sopenharmony_ci </tr> 1317023dd3b8Sopenharmony_ci <tr> 1318023dd3b8Sopenharmony_ci <td class='centre'><code>0</code></td> 1319023dd3b8Sopenharmony_ci <td>if this Decimal and <code>x</code> have the same value</td> 1320023dd3b8Sopenharmony_ci </tr> 1321023dd3b8Sopenharmony_ci <tr> 1322023dd3b8Sopenharmony_ci <td class='centre'><code>NaN</code></td> 1323023dd3b8Sopenharmony_ci <td>if the value of either this Decimal or <code>x</code> is <code>NaN</code> </td> 1324023dd3b8Sopenharmony_ci </tr> 1325023dd3b8Sopenharmony_ci </table> 1326023dd3b8Sopenharmony_ci <pre> 1327023dd3b8Sopenharmony_cix = new Decimal(Infinity) 1328023dd3b8Sopenharmony_ciy = new Decimal(5) 1329023dd3b8Sopenharmony_cix.comparedTo(y) // 1 1330023dd3b8Sopenharmony_cix.comparedTo(x.minus(1)) // 0 1331023dd3b8Sopenharmony_ciy.cmp(NaN) // NaN</pre> 1332023dd3b8Sopenharmony_ci 1333023dd3b8Sopenharmony_ci 1334023dd3b8Sopenharmony_ci 1335023dd3b8Sopenharmony_ci <h5 id="cos">cosine<code class='inset'>.cos() <i>⇒ Decimal</i></code></h5> 1336023dd3b8Sopenharmony_ci <p> 1337023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the cosine of the value in radians of this Decimal, 1338023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 1339023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 1340023dd3b8Sopenharmony_ci </p> 1341023dd3b8Sopenharmony_ci <p> 1342023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1343023dd3b8Sopenharmony_ci Range: [<code>-1, 1</code>] 1344023dd3b8Sopenharmony_ci </p> 1345023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1346023dd3b8Sopenharmony_ci <pre> 1347023dd3b8Sopenharmony_cix = new Decimal(0.25) 1348023dd3b8Sopenharmony_cix.cosine() // '0.96891242171064478414' 1349023dd3b8Sopenharmony_ciy = new Decimal(-0.25) 1350023dd3b8Sopenharmony_ciy.cos() // '0.96891242171064478414'</pre> 1351023dd3b8Sopenharmony_ci 1352023dd3b8Sopenharmony_ci 1353023dd3b8Sopenharmony_ci 1354023dd3b8Sopenharmony_ci <h5 id="cbrt">cubeRoot<code class='inset'>.cbrt() <i>⇒ Decimal</i></code></h5> 1355023dd3b8Sopenharmony_ci <p> 1356023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the cube root of this Decimal, rounded to 1357023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits using rounding mode 1358023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a>. 1359023dd3b8Sopenharmony_ci </p> 1360023dd3b8Sopenharmony_ci <p> 1361023dd3b8Sopenharmony_ci The return value will be correctly rounded, i.e. rounded as if the result was first calculated 1362023dd3b8Sopenharmony_ci to an infinite number of correct digits before rounding. 1363023dd3b8Sopenharmony_ci </p> 1364023dd3b8Sopenharmony_ci <pre> 1365023dd3b8Sopenharmony_cix = new Decimal(125) 1366023dd3b8Sopenharmony_cix.cubeRoot() // '5' 1367023dd3b8Sopenharmony_ciy = new Decimal(3) 1368023dd3b8Sopenharmony_ciy.cbrt() // '1.4422495703074083823'</pre> 1369023dd3b8Sopenharmony_ci 1370023dd3b8Sopenharmony_ci 1371023dd3b8Sopenharmony_ci 1372023dd3b8Sopenharmony_ci <h5 id="dp">decimalPlaces<code class='inset'>.dp() <i>⇒ number</i></code></h5> 1373023dd3b8Sopenharmony_ci <p> 1374023dd3b8Sopenharmony_ci Returns the number of decimal places, i.e. the number of digits after the decimal point, of 1375023dd3b8Sopenharmony_ci the value of this Decimal. 1376023dd3b8Sopenharmony_ci </p> 1377023dd3b8Sopenharmony_ci <pre> 1378023dd3b8Sopenharmony_cix = new Decimal(1.234) 1379023dd3b8Sopenharmony_cix.decimalPlaces() // '3' 1380023dd3b8Sopenharmony_ciy = new Decimal(987.654321) 1381023dd3b8Sopenharmony_ciy.dp() // '6'</pre> 1382023dd3b8Sopenharmony_ci 1383023dd3b8Sopenharmony_ci 1384023dd3b8Sopenharmony_ci 1385023dd3b8Sopenharmony_ci <h5 id="div">dividedBy<code class='inset'>.div(x) <i>⇒ Decimal</i></code></h5> 1386023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1387023dd3b8Sopenharmony_ci <p> 1388023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal divided by <code>x</code>, 1389023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 1390023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 1391023dd3b8Sopenharmony_ci </p> 1392023dd3b8Sopenharmony_ci <pre> 1393023dd3b8Sopenharmony_cix = new Decimal(355) 1394023dd3b8Sopenharmony_ciy = new Decimal(113) 1395023dd3b8Sopenharmony_cix.dividedBy(y) // '3.14159292035398230088' 1396023dd3b8Sopenharmony_cix.div(5) // '71'</pre> 1397023dd3b8Sopenharmony_ci 1398023dd3b8Sopenharmony_ci 1399023dd3b8Sopenharmony_ci 1400023dd3b8Sopenharmony_ci <h5 id="divToInt"> 1401023dd3b8Sopenharmony_ci dividedToIntegerBy<code class='inset'>.divToInt(x) <i>⇒ Decimal</i></code> 1402023dd3b8Sopenharmony_ci </h5> 1403023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1404023dd3b8Sopenharmony_ci <p> 1405023dd3b8Sopenharmony_ci Return a new Decimal whose value is the integer part of dividing this Decimal by 1406023dd3b8Sopenharmony_ci <code>x</code>, rounded to <code><a href='#precision'>precision</a></code> significant digits 1407023dd3b8Sopenharmony_ci using rounding mode <a href='#rounding'><code>rounding</code></a>. 1408023dd3b8Sopenharmony_ci </p> 1409023dd3b8Sopenharmony_ci <pre> 1410023dd3b8Sopenharmony_cix = new Decimal(5) 1411023dd3b8Sopenharmony_ciy = new Decimal(3) 1412023dd3b8Sopenharmony_cix.dividedToIntegerBy(y) // '1' 1413023dd3b8Sopenharmony_cix.divToInt(0.7) // '7'</pre> 1414023dd3b8Sopenharmony_ci 1415023dd3b8Sopenharmony_ci 1416023dd3b8Sopenharmony_ci 1417023dd3b8Sopenharmony_ci <h5 id="eq">equals<code class='inset'>.eq(x) <i>⇒ boolean</i></code></h5> 1418023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1419023dd3b8Sopenharmony_ci <p> 1420023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal equals the value of <code>x</code>, 1421023dd3b8Sopenharmony_ci otherwise returns <code>false</code>.<br /> As with JavaScript, <code>NaN</code> does not 1422023dd3b8Sopenharmony_ci equal <code>NaN</code>. 1423023dd3b8Sopenharmony_ci </p> 1424023dd3b8Sopenharmony_ci <p>Note: This method uses the <code>cmp</code> method internally.</p> 1425023dd3b8Sopenharmony_ci <pre> 1426023dd3b8Sopenharmony_ci0 === 1e-324 // true 1427023dd3b8Sopenharmony_cix = new Decimal(0) 1428023dd3b8Sopenharmony_cix.equals('1e-324') // false 1429023dd3b8Sopenharmony_cinew Decimal(-0).eq(x) // true ( -0 === 0 ) 1430023dd3b8Sopenharmony_ci 1431023dd3b8Sopenharmony_ciy = new Decimal(NaN) 1432023dd3b8Sopenharmony_ciy.equals(NaN) // false</pre> 1433023dd3b8Sopenharmony_ci 1434023dd3b8Sopenharmony_ci 1435023dd3b8Sopenharmony_ci 1436023dd3b8Sopenharmony_ci <h5 id="floor">floor<code class='inset'>.floor() <i>⇒ Decimal</i></code></h5> 1437023dd3b8Sopenharmony_ci <p> 1438023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal rounded to a whole number in 1439023dd3b8Sopenharmony_ci the direction of negative <code>Infinity</code>. 1440023dd3b8Sopenharmony_ci </p> 1441023dd3b8Sopenharmony_ci <p> 1442023dd3b8Sopenharmony_ci The return value is not affected by the value of the 1443023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 1444023dd3b8Sopenharmony_ci </p> 1445023dd3b8Sopenharmony_ci <pre> 1446023dd3b8Sopenharmony_cix = new Decimal(1.8) 1447023dd3b8Sopenharmony_cix.floor() // '1' 1448023dd3b8Sopenharmony_ciy = new Decimal(-1.3) 1449023dd3b8Sopenharmony_ciy.floor() // '-2'</pre> 1450023dd3b8Sopenharmony_ci 1451023dd3b8Sopenharmony_ci 1452023dd3b8Sopenharmony_ci 1453023dd3b8Sopenharmony_ci <h5 id="gt">greaterThan<code class='inset'>.gt(x) <i>⇒ boolean</i></code></h5> 1454023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1455023dd3b8Sopenharmony_ci <p> 1456023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is greater than the value of 1457023dd3b8Sopenharmony_ci <code>x</code>, otherwise returns <code>false</code>. 1458023dd3b8Sopenharmony_ci </p> 1459023dd3b8Sopenharmony_ci <p>Note: This method uses the <code>cmp</code> method internally.</p> 1460023dd3b8Sopenharmony_ci <pre> 1461023dd3b8Sopenharmony_ci0.1 > (0.3 - 0.2) // true 1462023dd3b8Sopenharmony_cix = new Decimal(0.1) 1463023dd3b8Sopenharmony_cix.greaterThan(Decimal(0.3).minus(0.2)) // false 1464023dd3b8Sopenharmony_cinew Decimal(0).gt(x) // false</pre> 1465023dd3b8Sopenharmony_ci 1466023dd3b8Sopenharmony_ci 1467023dd3b8Sopenharmony_ci 1468023dd3b8Sopenharmony_ci <h5 id="gte"> 1469023dd3b8Sopenharmony_ci greaterThanOrEqualTo<code class='inset'>.gte(x) <i>⇒ boolean</i></code> 1470023dd3b8Sopenharmony_ci </h5> 1471023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1472023dd3b8Sopenharmony_ci <p> 1473023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is greater than or equal to the value 1474023dd3b8Sopenharmony_ci of <code>x</code>, otherwise returns <code>false</code>. 1475023dd3b8Sopenharmony_ci </p> 1476023dd3b8Sopenharmony_ci <p>Note: This method uses the <code>cmp</code> method internally.</p> 1477023dd3b8Sopenharmony_ci <pre> 1478023dd3b8Sopenharmony_ci(0.3 - 0.2) >= 0.1 // false 1479023dd3b8Sopenharmony_cix = new Decimal(0.3).minus(0.2) 1480023dd3b8Sopenharmony_cix.greaterThanOrEqualTo(0.1) // true 1481023dd3b8Sopenharmony_cinew Decimal(1).gte(x) // true</pre> 1482023dd3b8Sopenharmony_ci 1483023dd3b8Sopenharmony_ci 1484023dd3b8Sopenharmony_ci 1485023dd3b8Sopenharmony_ci <h5 id="cosh">hyperbolicCosine<code class='inset'>.cosh() <i>⇒ Decimal</i></code></h5> 1486023dd3b8Sopenharmony_ci <p> 1487023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the hyperbolic cosine of the value in radians of this 1488023dd3b8Sopenharmony_ci Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using 1489023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1490023dd3b8Sopenharmony_ci </p> 1491023dd3b8Sopenharmony_ci <p> 1492023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1493023dd3b8Sopenharmony_ci Range: [<code>1, Infinity</code>] 1494023dd3b8Sopenharmony_ci </p> 1495023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1496023dd3b8Sopenharmony_ci <pre> 1497023dd3b8Sopenharmony_cix = new Decimal(1) 1498023dd3b8Sopenharmony_cix.hyperbolicCosine() // '1.5430806348152437785' 1499023dd3b8Sopenharmony_ciy = new Decimal(0.5) 1500023dd3b8Sopenharmony_ciy.cosh() // '1.1276259652063807852'</pre> 1501023dd3b8Sopenharmony_ci 1502023dd3b8Sopenharmony_ci 1503023dd3b8Sopenharmony_ci 1504023dd3b8Sopenharmony_ci <h5 id="sinh">hyperbolicSine<code class='inset'>.sinh() <i>⇒ Decimal</i></code></h5> 1505023dd3b8Sopenharmony_ci <p> 1506023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the hyperbolic sine of the value in radians of this 1507023dd3b8Sopenharmony_ci Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using 1508023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1509023dd3b8Sopenharmony_ci </p> 1510023dd3b8Sopenharmony_ci <p> 1511023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1512023dd3b8Sopenharmony_ci Range: [<code>-Infinity, Infinity</code>] 1513023dd3b8Sopenharmony_ci </p> 1514023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1515023dd3b8Sopenharmony_ci <pre> 1516023dd3b8Sopenharmony_cix = new Decimal(1) 1517023dd3b8Sopenharmony_cix.hyperbolicSine() // '1.1752011936438014569' 1518023dd3b8Sopenharmony_ciy = new Decimal(0.5) 1519023dd3b8Sopenharmony_ciy.sinh() // '0.52109530549374736162'</pre> 1520023dd3b8Sopenharmony_ci 1521023dd3b8Sopenharmony_ci 1522023dd3b8Sopenharmony_ci 1523023dd3b8Sopenharmony_ci <h5 id="tanh">hyperbolicTangent<code class='inset'>.tanh() <i>⇒ Decimal</i></code></h5> 1524023dd3b8Sopenharmony_ci <p> 1525023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the hyperbolic tangent of the value in radians of this 1526023dd3b8Sopenharmony_ci Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using 1527023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1528023dd3b8Sopenharmony_ci </p> 1529023dd3b8Sopenharmony_ci <p> 1530023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1531023dd3b8Sopenharmony_ci Range: [<code>-1, 1</code>] 1532023dd3b8Sopenharmony_ci </p> 1533023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1534023dd3b8Sopenharmony_ci <pre> 1535023dd3b8Sopenharmony_cix = new Decimal(1) 1536023dd3b8Sopenharmony_cix.hyperbolicTangent() // '0.76159415595576488812' 1537023dd3b8Sopenharmony_ciy = new Decimal(0.5) 1538023dd3b8Sopenharmony_ciy.tanh() // '0.4621171572600097585'</pre> 1539023dd3b8Sopenharmony_ci 1540023dd3b8Sopenharmony_ci 1541023dd3b8Sopenharmony_ci 1542023dd3b8Sopenharmony_ci <h5 id="acos">inverseCosine<code class='inset'>.acos() <i>⇒ Decimal</i></code></h5> 1543023dd3b8Sopenharmony_ci <p> 1544023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse cosine in radians of the value of this 1545023dd3b8Sopenharmony_ci Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using 1546023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1547023dd3b8Sopenharmony_ci </p> 1548023dd3b8Sopenharmony_ci <p> 1549023dd3b8Sopenharmony_ci Domain: [<code>-1, 1</code>]<br /> 1550023dd3b8Sopenharmony_ci Range: [<code>0, pi</code>] 1551023dd3b8Sopenharmony_ci </p> 1552023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1553023dd3b8Sopenharmony_ci <pre> 1554023dd3b8Sopenharmony_cix = new Decimal(0) 1555023dd3b8Sopenharmony_cix.inverseCosine() // '1.5707963267948966192' 1556023dd3b8Sopenharmony_ciy = new Decimal(0.5) 1557023dd3b8Sopenharmony_ciy.acos() // '1.0471975511965977462'</pre> 1558023dd3b8Sopenharmony_ci 1559023dd3b8Sopenharmony_ci 1560023dd3b8Sopenharmony_ci 1561023dd3b8Sopenharmony_ci <h5 id="acosh"> 1562023dd3b8Sopenharmony_ci inverseHyperbolicCosine<code class='inset'>.acosh() <i>⇒ Decimal</i></code> 1563023dd3b8Sopenharmony_ci </h5> 1564023dd3b8Sopenharmony_ci <p> 1565023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse hyperbolic cosine in radians of the value of 1566023dd3b8Sopenharmony_ci this Decimal, rounded to <a href='#precision'><code>precision</code></a> significant 1567023dd3b8Sopenharmony_ci digits using rounding mode <a href='#rounding'><code>rounding</code></a>. 1568023dd3b8Sopenharmony_ci </p> 1569023dd3b8Sopenharmony_ci <p> 1570023dd3b8Sopenharmony_ci Domain: [<code>1, Infinity</code>]<br /> 1571023dd3b8Sopenharmony_ci Range: [<code>0, Infinity</code>] 1572023dd3b8Sopenharmony_ci </p> 1573023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1574023dd3b8Sopenharmony_ci <pre> 1575023dd3b8Sopenharmony_cix = new Decimal(5) 1576023dd3b8Sopenharmony_cix.inverseHyperbolicCosine() // '2.2924316695611776878' 1577023dd3b8Sopenharmony_ciy = new Decimal(50) 1578023dd3b8Sopenharmony_ciy.acosh() // '4.6050701709847571595'</pre> 1579023dd3b8Sopenharmony_ci 1580023dd3b8Sopenharmony_ci 1581023dd3b8Sopenharmony_ci 1582023dd3b8Sopenharmony_ci <h5 id="asinh"> 1583023dd3b8Sopenharmony_ci inverseHyperbolicSine<code class='inset'>.asinh() <i>⇒ Decimal</i></code> 1584023dd3b8Sopenharmony_ci </h5> 1585023dd3b8Sopenharmony_ci <p> 1586023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse hyperbolic sine in radians of the value of 1587023dd3b8Sopenharmony_ci this Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits 1588023dd3b8Sopenharmony_ci using rounding mode <a href='#rounding'><code>rounding</code></a>. 1589023dd3b8Sopenharmony_ci </p> 1590023dd3b8Sopenharmony_ci <p> 1591023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1592023dd3b8Sopenharmony_ci Range: [<code>-Infinity, Infinity</code>] 1593023dd3b8Sopenharmony_ci </p> 1594023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1595023dd3b8Sopenharmony_ci <pre> 1596023dd3b8Sopenharmony_cix = new Decimal(5) 1597023dd3b8Sopenharmony_cix.inverseHyperbolicSine() // '2.3124383412727526203' 1598023dd3b8Sopenharmony_ciy = new Decimal(50) 1599023dd3b8Sopenharmony_ciy.asinh() // '4.6052701709914238266'</pre> 1600023dd3b8Sopenharmony_ci 1601023dd3b8Sopenharmony_ci 1602023dd3b8Sopenharmony_ci 1603023dd3b8Sopenharmony_ci <h5 id="atanh"> 1604023dd3b8Sopenharmony_ci inverseHyperbolicTangent<code class='inset'>.atanh() <i>⇒ Decimal</i></code> 1605023dd3b8Sopenharmony_ci </h5> 1606023dd3b8Sopenharmony_ci <p> 1607023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse hyperbolic tangent in radians of the value of 1608023dd3b8Sopenharmony_ci this Decimal, rounded to <a href='#precision'><code>precision</code></a> significant 1609023dd3b8Sopenharmony_ci digits using rounding mode <a href='#rounding'><code>rounding</code></a>. 1610023dd3b8Sopenharmony_ci </p> 1611023dd3b8Sopenharmony_ci <p> 1612023dd3b8Sopenharmony_ci Domain: [<code>-1, 1</code>]<br /> 1613023dd3b8Sopenharmony_ci Range: [<code>-Infinity, Infinity</code>] 1614023dd3b8Sopenharmony_ci </p> 1615023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1616023dd3b8Sopenharmony_ci <pre> 1617023dd3b8Sopenharmony_cix = new Decimal(0.5) 1618023dd3b8Sopenharmony_cix.inverseHyperbolicTangent() // '0.5493061443340548457' 1619023dd3b8Sopenharmony_ciy = new Decimal(0.75) 1620023dd3b8Sopenharmony_ciy.atanh() // '0.97295507452765665255'</pre> 1621023dd3b8Sopenharmony_ci 1622023dd3b8Sopenharmony_ci 1623023dd3b8Sopenharmony_ci 1624023dd3b8Sopenharmony_ci <h5 id="asin">inverseSine<code class='inset'>.asin() <i>⇒ Decimal</i></code></h5> 1625023dd3b8Sopenharmony_ci <p> 1626023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse sine in radians of the value of this Decimal, 1627023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 1628023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 1629023dd3b8Sopenharmony_ci </p> 1630023dd3b8Sopenharmony_ci <p> 1631023dd3b8Sopenharmony_ci Domain: [<code>-1, 1</code>]<br /> 1632023dd3b8Sopenharmony_ci Range: [<code>-pi/2, pi/2</code>] 1633023dd3b8Sopenharmony_ci </p> 1634023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1635023dd3b8Sopenharmony_ci <pre> 1636023dd3b8Sopenharmony_cix = new Decimal(0.5) 1637023dd3b8Sopenharmony_cix.inverseSine() // '0.52359877559829887308' 1638023dd3b8Sopenharmony_ciy = new Decimal(0.75) 1639023dd3b8Sopenharmony_ciy.asin() // '0.84806207898148100805'</pre> 1640023dd3b8Sopenharmony_ci 1641023dd3b8Sopenharmony_ci 1642023dd3b8Sopenharmony_ci 1643023dd3b8Sopenharmony_ci <h5 id="atan">inverseTangent<code class='inset'>.atan() <i>⇒ Decimal</i></code></h5> 1644023dd3b8Sopenharmony_ci <p> 1645023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the inverse tangent in radians of the value of this 1646023dd3b8Sopenharmony_ci Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using 1647023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1648023dd3b8Sopenharmony_ci </p> 1649023dd3b8Sopenharmony_ci <p> 1650023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1651023dd3b8Sopenharmony_ci Range: [<code>-pi/2, pi/2</code>] 1652023dd3b8Sopenharmony_ci </p> 1653023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1654023dd3b8Sopenharmony_ci <pre> 1655023dd3b8Sopenharmony_cix = new Decimal(0.5) 1656023dd3b8Sopenharmony_cix.inverseTangent() // '0.46364760900080611621' 1657023dd3b8Sopenharmony_ciy = new Decimal(0.75) 1658023dd3b8Sopenharmony_ciy.atan() // '0.6435011087932843868'</pre> 1659023dd3b8Sopenharmony_ci 1660023dd3b8Sopenharmony_ci 1661023dd3b8Sopenharmony_ci 1662023dd3b8Sopenharmony_ci <h5 id="isFinite">isFinite<code class='inset'>.isFinite() <i>⇒ boolean</i></code></h5> 1663023dd3b8Sopenharmony_ci <p> 1664023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is a finite number, otherwise returns 1665023dd3b8Sopenharmony_ci <code>false</code>.<br /> 1666023dd3b8Sopenharmony_ci The only possible non-finite values of a Decimal are <code>NaN</code>, <code>Infinity</code> 1667023dd3b8Sopenharmony_ci and <code>-Infinity</code>. 1668023dd3b8Sopenharmony_ci </p> 1669023dd3b8Sopenharmony_ci <pre> 1670023dd3b8Sopenharmony_cix = new Decimal(1) 1671023dd3b8Sopenharmony_cix.isFinite() // true 1672023dd3b8Sopenharmony_ciy = new Decimal(Infinity) 1673023dd3b8Sopenharmony_ciy.isFinite() // false</pre> 1674023dd3b8Sopenharmony_ci 1675023dd3b8Sopenharmony_ci 1676023dd3b8Sopenharmony_ci 1677023dd3b8Sopenharmony_ci <h5 id="isInt">isInteger<code class='inset'>.isInt() <i>⇒ boolean</i></code></h5> 1678023dd3b8Sopenharmony_ci <p> 1679023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is a whole number, otherwise returns 1680023dd3b8Sopenharmony_ci <code>false</code>. 1681023dd3b8Sopenharmony_ci </p> 1682023dd3b8Sopenharmony_ci <pre> 1683023dd3b8Sopenharmony_cix = new Decimal(1) 1684023dd3b8Sopenharmony_cix.isInteger() // true 1685023dd3b8Sopenharmony_ciy = new Decimal(123.456) 1686023dd3b8Sopenharmony_ciy.isInt() // false</pre> 1687023dd3b8Sopenharmony_ci 1688023dd3b8Sopenharmony_ci 1689023dd3b8Sopenharmony_ci 1690023dd3b8Sopenharmony_ci <h5 id="isNaN">isNaN<code class='inset'>.isNaN() <i>⇒ boolean</i></code></h5> 1691023dd3b8Sopenharmony_ci <p> 1692023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is <code>NaN</code>, otherwise returns 1693023dd3b8Sopenharmony_ci <code>false</code>. 1694023dd3b8Sopenharmony_ci </p> 1695023dd3b8Sopenharmony_ci <pre> 1696023dd3b8Sopenharmony_cix = new Decimal(NaN) 1697023dd3b8Sopenharmony_cix.isNaN() // true 1698023dd3b8Sopenharmony_ciy = new Decimal('Infinity') 1699023dd3b8Sopenharmony_ciy.isNaN() // false</pre> 1700023dd3b8Sopenharmony_ci 1701023dd3b8Sopenharmony_ci 1702023dd3b8Sopenharmony_ci 1703023dd3b8Sopenharmony_ci <h5 id="isNeg">isNegative<code class='inset'>.isNeg() <i>⇒ boolean</i></code></h5> 1704023dd3b8Sopenharmony_ci <p> 1705023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is negative, otherwise returns 1706023dd3b8Sopenharmony_ci <code>false</code>. 1707023dd3b8Sopenharmony_ci </p> 1708023dd3b8Sopenharmony_ci <pre> 1709023dd3b8Sopenharmony_cix = new Decimal(-0) 1710023dd3b8Sopenharmony_cix.isNegative() // true 1711023dd3b8Sopenharmony_ciy = new Decimal(2) 1712023dd3b8Sopenharmony_ciy.isNeg // false</pre> 1713023dd3b8Sopenharmony_ci <p>Note that zero is signed.</p> 1714023dd3b8Sopenharmony_ci <pre> 1715023dd3b8Sopenharmony_cinew Decimal(0).valueOf() // '0' 1716023dd3b8Sopenharmony_cinew Decimal(0).isNegative() // false 1717023dd3b8Sopenharmony_cinew Decimal(0).negated().valueOf() // '-0' 1718023dd3b8Sopenharmony_cinew Decimal(0).negated().isNegative() // true 1719023dd3b8Sopenharmony_cinew Decimal(-0).isNegative() // true 1720023dd3b8Sopenharmony_ci </pre> 1721023dd3b8Sopenharmony_ci 1722023dd3b8Sopenharmony_ci 1723023dd3b8Sopenharmony_ci 1724023dd3b8Sopenharmony_ci <h5 id="isPos">isPositive<code class='inset'>.isPos() <i>⇒ boolean</i></code></h5> 1725023dd3b8Sopenharmony_ci <p> 1726023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is positive, otherwise returns 1727023dd3b8Sopenharmony_ci <code>false</code>. 1728023dd3b8Sopenharmony_ci </p> 1729023dd3b8Sopenharmony_ci <pre> 1730023dd3b8Sopenharmony_cix = new Decimal(0) 1731023dd3b8Sopenharmony_cix.isPositive() // true 1732023dd3b8Sopenharmony_ciy = new Decimal(-2) 1733023dd3b8Sopenharmony_ciy.isPos // false</pre> 1734023dd3b8Sopenharmony_ci 1735023dd3b8Sopenharmony_ci 1736023dd3b8Sopenharmony_ci 1737023dd3b8Sopenharmony_ci <h5 id="isZero">isZero<code class='inset'>.isZero() <i>⇒ boolean</i></code></h5> 1738023dd3b8Sopenharmony_ci <p> 1739023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is zero or minus zero, otherwise 1740023dd3b8Sopenharmony_ci returns <code>false</code>. 1741023dd3b8Sopenharmony_ci </p> 1742023dd3b8Sopenharmony_ci <pre> 1743023dd3b8Sopenharmony_cix = new Decimal(-0) 1744023dd3b8Sopenharmony_cix.isZero() && x.isNeg() // true 1745023dd3b8Sopenharmony_ciy = new Decimal(Infinity) 1746023dd3b8Sopenharmony_ciy.isZero() // false</pre> 1747023dd3b8Sopenharmony_ci 1748023dd3b8Sopenharmony_ci 1749023dd3b8Sopenharmony_ci 1750023dd3b8Sopenharmony_ci <h5 id="lt">lessThan<code class='inset'>.lt(x) <i>⇒ boolean</i></code></h5> 1751023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1752023dd3b8Sopenharmony_ci <p> 1753023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is less than the value of 1754023dd3b8Sopenharmony_ci <code>x</code>, otherwise returns <code>false</code>. 1755023dd3b8Sopenharmony_ci </p> 1756023dd3b8Sopenharmony_ci <p>Note: This method uses the <code>cmp</code> method internally.</p> 1757023dd3b8Sopenharmony_ci <pre> 1758023dd3b8Sopenharmony_ci(0.3 - 0.2) < 0.1 // true 1759023dd3b8Sopenharmony_cix = new Decimal(0.3).minus(0.2) 1760023dd3b8Sopenharmony_cix.lessThan(0.1) // false 1761023dd3b8Sopenharmony_cinew Decimal(0).lt(x) // true</pre> 1762023dd3b8Sopenharmony_ci 1763023dd3b8Sopenharmony_ci 1764023dd3b8Sopenharmony_ci 1765023dd3b8Sopenharmony_ci <h5 id="lte">lessThanOrEqualTo<code class='inset'>.lte(x) <i>⇒ boolean</i></code></h5> 1766023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1767023dd3b8Sopenharmony_ci <p> 1768023dd3b8Sopenharmony_ci Returns <code>true</code> if the value of this Decimal is less than or equal to the value of 1769023dd3b8Sopenharmony_ci <code>x</code>, otherwise returns <code>false</code>. 1770023dd3b8Sopenharmony_ci </p> 1771023dd3b8Sopenharmony_ci <p>Note: This method uses the <code>cmp</code> method internally.</p> 1772023dd3b8Sopenharmony_ci <pre> 1773023dd3b8Sopenharmony_ci0.1 <= (0.3 - 0.2) // false 1774023dd3b8Sopenharmony_cix = new Decimal(0.1) 1775023dd3b8Sopenharmony_cix.lessThanOrEqualTo(Decimal(0.3).minus(0.2)) // true 1776023dd3b8Sopenharmony_cinew Decimal(-1).lte(x) // true</pre> 1777023dd3b8Sopenharmony_ci 1778023dd3b8Sopenharmony_ci 1779023dd3b8Sopenharmony_ci 1780023dd3b8Sopenharmony_ci <h5 id="log">logarithm<code class='inset'>.log(x) <i>⇒ Decimal</i></code></h5> 1781023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1782023dd3b8Sopenharmony_ci <p> 1783023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the base <code>x</code> logarithm of the value of this 1784023dd3b8Sopenharmony_ci Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using 1785023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1786023dd3b8Sopenharmony_ci </p> 1787023dd3b8Sopenharmony_ci <p> 1788023dd3b8Sopenharmony_ci If <code>x</code> is omitted, the base 10 logarithm of the value of this Decimal will be 1789023dd3b8Sopenharmony_ci returned. 1790023dd3b8Sopenharmony_ci </p> 1791023dd3b8Sopenharmony_ci <pre> 1792023dd3b8Sopenharmony_cix = new Decimal(1000) 1793023dd3b8Sopenharmony_cix.logarithm() // '3' 1794023dd3b8Sopenharmony_ciy = new Decimal(256) 1795023dd3b8Sopenharmony_ciy.log(2) // '8'</pre> 1796023dd3b8Sopenharmony_ci <p> 1797023dd3b8Sopenharmony_ci The return value will <i>almost always</i> be correctly rounded, i.e. rounded as if the result 1798023dd3b8Sopenharmony_ci was first calculated to an infinite number of correct digits before rounding. If a result is 1799023dd3b8Sopenharmony_ci incorrectly rounded the maximum error will be <code>1</code> <i>ulp</i> (unit in the last 1800023dd3b8Sopenharmony_ci place). 1801023dd3b8Sopenharmony_ci </p> 1802023dd3b8Sopenharmony_ci <p>Logarithms to base <code>2</code> or <code>10</code> will always be correctly rounded.</p> 1803023dd3b8Sopenharmony_ci <p> 1804023dd3b8Sopenharmony_ci See <a href='#pow'><code>toPower</code></a> for the circumstances in which this method may 1805023dd3b8Sopenharmony_ci return an incorrectly rounded result, and see <a href='#ln'><code>naturalLogarithm</code></a> 1806023dd3b8Sopenharmony_ci for the precision limit. 1807023dd3b8Sopenharmony_ci </p> 1808023dd3b8Sopenharmony_ci <p>The performance of this method degrades exponentially with increasing digits.</p> 1809023dd3b8Sopenharmony_ci 1810023dd3b8Sopenharmony_ci 1811023dd3b8Sopenharmony_ci 1812023dd3b8Sopenharmony_ci <h5 id="sub">minus<code class='inset'>.minus(x) <i>⇒ Decimal</i></code></h5> 1813023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1814023dd3b8Sopenharmony_ci <p> 1815023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal minus <code>x</code>, rounded 1816023dd3b8Sopenharmony_ci to <a href='#precision'><code>precision</code></a> significant digits using rounding mode 1817023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a>. 1818023dd3b8Sopenharmony_ci </p> 1819023dd3b8Sopenharmony_ci <pre> 1820023dd3b8Sopenharmony_ci0.3 - 0.1 // 0.19999999999999998 1821023dd3b8Sopenharmony_cix = new Decimal(0.3) 1822023dd3b8Sopenharmony_cix.minus(0.1) // '0.2'</pre> 1823023dd3b8Sopenharmony_ci 1824023dd3b8Sopenharmony_ci 1825023dd3b8Sopenharmony_ci 1826023dd3b8Sopenharmony_ci <h5 id="mod">modulo<code class='inset'>.mod(x) <i>⇒ Decimal</i></code></h5> 1827023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1828023dd3b8Sopenharmony_ci <p> 1829023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal modulo <code>x</code>, 1830023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 1831023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 1832023dd3b8Sopenharmony_ci </p> 1833023dd3b8Sopenharmony_ci <p> 1834023dd3b8Sopenharmony_ci The value returned, and in particular its sign, is dependent on the value of the 1835023dd3b8Sopenharmony_ci <a href='#modulo'><code>modulo</code></a> property of this Decimal's constructor. If it is 1836023dd3b8Sopenharmony_ci <code>1</code> (default value), the result will have the same sign as this Decimal, and it 1837023dd3b8Sopenharmony_ci will match that of Javascript's <code>%</code> operator (within the limits of double 1838023dd3b8Sopenharmony_ci precision) and BigDecimal's <code>remainder</code> method. 1839023dd3b8Sopenharmony_ci </p> 1840023dd3b8Sopenharmony_ci <p> 1841023dd3b8Sopenharmony_ci See <a href='#modulo'><code>modulo</code></a> for a description of the other modulo modes. 1842023dd3b8Sopenharmony_ci </p> 1843023dd3b8Sopenharmony_ci <pre> 1844023dd3b8Sopenharmony_ci1 % 0.9 // 0.09999999999999998 1845023dd3b8Sopenharmony_cix = new Decimal(1) 1846023dd3b8Sopenharmony_cix.modulo(0.9) // '0.1' 1847023dd3b8Sopenharmony_ci 1848023dd3b8Sopenharmony_ciy = new Decimal(8) 1849023dd3b8Sopenharmony_ciz = new Decimal(-3) 1850023dd3b8Sopenharmony_ciDecimal.modulo = 1 1851023dd3b8Sopenharmony_ciy.mod(z) // '2' 1852023dd3b8Sopenharmony_ciDecimal.modulo = 3 1853023dd3b8Sopenharmony_ciy.mod(z) // '-1'</pre> 1854023dd3b8Sopenharmony_ci 1855023dd3b8Sopenharmony_ci 1856023dd3b8Sopenharmony_ci 1857023dd3b8Sopenharmony_ci <h5 id="exp">naturalExponential<code class='inset'>.exp() <i>⇒ Decimal</i></code></h5> 1858023dd3b8Sopenharmony_ci <p> 1859023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the base <code>e</code> (Euler's number, the base of the 1860023dd3b8Sopenharmony_ci natural logarithm) exponential of the value of this Decimal, rounded to 1861023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits using rounding mode 1862023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a>. 1863023dd3b8Sopenharmony_ci </p> 1864023dd3b8Sopenharmony_ci <p> 1865023dd3b8Sopenharmony_ci The <code><a href='#ln'>naturalLogarithm</a></code> function is the inverse of this function. 1866023dd3b8Sopenharmony_ci </p> 1867023dd3b8Sopenharmony_ci <pre> 1868023dd3b8Sopenharmony_cix = new Decimal(1) 1869023dd3b8Sopenharmony_cix.naturalExponential() // '2.7182818284590452354' 1870023dd3b8Sopenharmony_ciy = new Decimal(2) 1871023dd3b8Sopenharmony_ciy.exp() // '7.3890560989306502272'</pre> 1872023dd3b8Sopenharmony_ci <p> 1873023dd3b8Sopenharmony_ci The return value will be correctly rounded, i.e. rounded as if the result was first calculated 1874023dd3b8Sopenharmony_ci to an infinite number of correct digits before rounding. (The mathematical result of the 1875023dd3b8Sopenharmony_ci exponential function is non-terminating, unless its argument is <code>0</code>). 1876023dd3b8Sopenharmony_ci </p> 1877023dd3b8Sopenharmony_ci <p>The performance of this method degrades exponentially with increasing digits.</p> 1878023dd3b8Sopenharmony_ci 1879023dd3b8Sopenharmony_ci 1880023dd3b8Sopenharmony_ci 1881023dd3b8Sopenharmony_ci <h5 id="ln">naturalLogarithm<code class='inset'>.ln() <i>⇒ Decimal</i></code></h5> 1882023dd3b8Sopenharmony_ci <p> 1883023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the natural logarithm of the value of this Decimal, 1884023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 1885023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 1886023dd3b8Sopenharmony_ci </p> 1887023dd3b8Sopenharmony_ci <p> 1888023dd3b8Sopenharmony_ci The natural logarithm is the inverse of the <code><a href='#exp'>naturalExponential</a></code> 1889023dd3b8Sopenharmony_ci function. 1890023dd3b8Sopenharmony_ci </p> 1891023dd3b8Sopenharmony_ci <pre> 1892023dd3b8Sopenharmony_cix = new Decimal(10) 1893023dd3b8Sopenharmony_cix.naturalLogarithm() // '2.3026' 1894023dd3b8Sopenharmony_ciy = new Decimal('1.23e+30') 1895023dd3b8Sopenharmony_ciy.ln() // '69.28'</pre> 1896023dd3b8Sopenharmony_ci <p> 1897023dd3b8Sopenharmony_ci The return value will be correctly rounded, i.e. rounded as if the result was first calculated 1898023dd3b8Sopenharmony_ci to an infinite number of correct digits before rounding. (The mathematical result of the 1899023dd3b8Sopenharmony_ci natural logarithm function is non-terminating, unless its argument is <code>1</code>). 1900023dd3b8Sopenharmony_ci </p> 1901023dd3b8Sopenharmony_ci <p> 1902023dd3b8Sopenharmony_ci Internally, this method is dependent on a constant whose value is the natural logarithm of 1903023dd3b8Sopenharmony_ci <code>10</code>. This <code>LN10</code> variable in the source code currently has a precision 1904023dd3b8Sopenharmony_ci of <code>1025</code> digits, meaning that this method can accurately calculate up to 1905023dd3b8Sopenharmony_ci <code>1000</code> digits. 1906023dd3b8Sopenharmony_ci </p> 1907023dd3b8Sopenharmony_ci <p> 1908023dd3b8Sopenharmony_ci If more than <code>1000</code> digits is required then the precision of <code>LN10</code> 1909023dd3b8Sopenharmony_ci will need to be increased to <code>25</code> digits more than is required - though, as the 1910023dd3b8Sopenharmony_ci time-taken by this method increases exponentially with increasing digits, it is unlikely to be 1911023dd3b8Sopenharmony_ci viable to calculate over <code>1000</code> digits anyway. 1912023dd3b8Sopenharmony_ci </p> 1913023dd3b8Sopenharmony_ci 1914023dd3b8Sopenharmony_ci 1915023dd3b8Sopenharmony_ci 1916023dd3b8Sopenharmony_ci <h5 id="neg">negated<code class='inset'>.neg() <i>⇒ Decimal</i></code></h5> 1917023dd3b8Sopenharmony_ci <p> 1918023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal negated, i.e. multiplied by 1919023dd3b8Sopenharmony_ci <code>-1</code>. 1920023dd3b8Sopenharmony_ci </p> 1921023dd3b8Sopenharmony_ci <p> 1922023dd3b8Sopenharmony_ci The return value is not affected by the value of the 1923023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 1924023dd3b8Sopenharmony_ci </p> 1925023dd3b8Sopenharmony_ci <pre> 1926023dd3b8Sopenharmony_cix = new Decimal(1.8) 1927023dd3b8Sopenharmony_cix.negated() // '-1.8' 1928023dd3b8Sopenharmony_ciy = new Decimal(-1.3) 1929023dd3b8Sopenharmony_ciy.neg() // '1.3'</pre> 1930023dd3b8Sopenharmony_ci 1931023dd3b8Sopenharmony_ci 1932023dd3b8Sopenharmony_ci 1933023dd3b8Sopenharmony_ci <h5 id="add">plus<code class='inset'>.plus(x) <i>⇒ Decimal</i></code></h5> 1934023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 1935023dd3b8Sopenharmony_ci <p> 1936023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal plus <code>x</code>, rounded to 1937023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits using rounding mode 1938023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a>. 1939023dd3b8Sopenharmony_ci </p> 1940023dd3b8Sopenharmony_ci <pre> 1941023dd3b8Sopenharmony_ci0.1 + 0.2 // 0.30000000000000004 1942023dd3b8Sopenharmony_cix = new Decimal(0.1) 1943023dd3b8Sopenharmony_ciy = x.plus(0.2) // '0.3' 1944023dd3b8Sopenharmony_cinew Decimal(0.7).plus(x).plus(y) // '1.1'</pre> 1945023dd3b8Sopenharmony_ci 1946023dd3b8Sopenharmony_ci 1947023dd3b8Sopenharmony_ci 1948023dd3b8Sopenharmony_ci <h5 id="sd">precision<code class='inset'>.sd([include_zeros]) <i>⇒ number</i></code></h5> 1949023dd3b8Sopenharmony_ci <p>Returns the number of significant digits of the value of this Decimal.</p> 1950023dd3b8Sopenharmony_ci <p> 1951023dd3b8Sopenharmony_ci If <code>include_zeros</code> is <code>true</code> or <code>1</code> then any trailing zeros 1952023dd3b8Sopenharmony_ci of the integer part of a number are counted as significant digits, otherwise they are not. 1953023dd3b8Sopenharmony_ci </p> 1954023dd3b8Sopenharmony_ci <pre> 1955023dd3b8Sopenharmony_cix = new Decimal(1.234) 1956023dd3b8Sopenharmony_cix.precision() // '4' 1957023dd3b8Sopenharmony_ciy = new Decimal(987000) 1958023dd3b8Sopenharmony_ciy.sd() // '3' 1959023dd3b8Sopenharmony_ciy.sd(true) // '6'</pre> 1960023dd3b8Sopenharmony_ci 1961023dd3b8Sopenharmony_ci 1962023dd3b8Sopenharmony_ci 1963023dd3b8Sopenharmony_ci <h5 id="round">round<code class='inset'>.round() <i>⇒ Decimal</i></code></h5> 1964023dd3b8Sopenharmony_ci <p> 1965023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal rounded to a whole number using 1966023dd3b8Sopenharmony_ci rounding mode <a href='#rounding'><code>rounding</code></a>. 1967023dd3b8Sopenharmony_ci </p> 1968023dd3b8Sopenharmony_ci <p> 1969023dd3b8Sopenharmony_ci To emulate <code>Math.round</code>, set <a href='#rounding'><code>rounding</code></a> to 1970023dd3b8Sopenharmony_ci <code>7</code>, i.e. <a href='#modes'><code>ROUND_HALF_CEIL</code></a>. 1971023dd3b8Sopenharmony_ci </p> 1972023dd3b8Sopenharmony_ci <pre> 1973023dd3b8Sopenharmony_ciDecimal.set({ rounding: 4 }) 1974023dd3b8Sopenharmony_cix = 1234.5 1975023dd3b8Sopenharmony_cix.round() // '1235' 1976023dd3b8Sopenharmony_ci 1977023dd3b8Sopenharmony_ciDecimal.rounding = Decimal.ROUND_DOWN 1978023dd3b8Sopenharmony_cix.round() // '1234' 1979023dd3b8Sopenharmony_cix // '1234.5'</pre> 1980023dd3b8Sopenharmony_ci 1981023dd3b8Sopenharmony_ci 1982023dd3b8Sopenharmony_ci 1983023dd3b8Sopenharmony_ci <h5 id="sin">sine<code class='inset'>.sin() <i>⇒ Decimal</i></code></h5> 1984023dd3b8Sopenharmony_ci <p> 1985023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the sine of the value in radians of this Decimal, 1986023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 1987023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 1988023dd3b8Sopenharmony_ci </p> 1989023dd3b8Sopenharmony_ci <p> 1990023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 1991023dd3b8Sopenharmony_ci Range: [<code>-1, 1</code>] 1992023dd3b8Sopenharmony_ci </p> 1993023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 1994023dd3b8Sopenharmony_ci <pre> 1995023dd3b8Sopenharmony_cix = new Decimal(0.5) 1996023dd3b8Sopenharmony_cix.sine() // '0.47942553860420300027' 1997023dd3b8Sopenharmony_ciy = new Decimal(0.75) 1998023dd3b8Sopenharmony_ciy.sin() // '0.68163876002333416673'</pre> 1999023dd3b8Sopenharmony_ci 2000023dd3b8Sopenharmony_ci 2001023dd3b8Sopenharmony_ci 2002023dd3b8Sopenharmony_ci <h5 id="sqrt">squareRoot<code class='inset'>.sqrt() <i>⇒ Decimal</i></code></h5> 2003023dd3b8Sopenharmony_ci <p> 2004023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the square root of this Decimal, rounded to 2005023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits using rounding mode 2006023dd3b8Sopenharmony_ci <a href='#rounding'><code>rounding</code></a>. 2007023dd3b8Sopenharmony_ci </p> 2008023dd3b8Sopenharmony_ci <p> 2009023dd3b8Sopenharmony_ci The return value will be correctly rounded, i.e. rounded as if the result was first calculated 2010023dd3b8Sopenharmony_ci to an infinite number of correct digits before rounding. 2011023dd3b8Sopenharmony_ci </p> 2012023dd3b8Sopenharmony_ci <p> 2013023dd3b8Sopenharmony_ci This method is much faster than using the <a href='#pow'><code>toPower</code></a> method with 2014023dd3b8Sopenharmony_ci an exponent of <code>0.5</code>. 2015023dd3b8Sopenharmony_ci </p> 2016023dd3b8Sopenharmony_ci <pre> 2017023dd3b8Sopenharmony_cix = new Decimal(16) 2018023dd3b8Sopenharmony_cix.squareRoot() // '4' 2019023dd3b8Sopenharmony_ciy = new Decimal(3) 2020023dd3b8Sopenharmony_ciy.sqrt() // '1.73205080756887729353' 2021023dd3b8Sopenharmony_ciy.sqrt().eq( y.pow(0.5) ) // true</pre> 2022023dd3b8Sopenharmony_ci 2023023dd3b8Sopenharmony_ci 2024023dd3b8Sopenharmony_ci 2025023dd3b8Sopenharmony_ci <h5 id="tan">tangent<code class='inset'>.tan() <i>⇒ Decimal</i></code></h5> 2026023dd3b8Sopenharmony_ci <p> 2027023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the tangent of the value in radians of this Decimal, 2028023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 2029023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 2030023dd3b8Sopenharmony_ci </p> 2031023dd3b8Sopenharmony_ci <p> 2032023dd3b8Sopenharmony_ci Domain: [<code>-Infinity, Infinity</code>]<br /> 2033023dd3b8Sopenharmony_ci Range: [<code>-Infinity, Infinity</code>] 2034023dd3b8Sopenharmony_ci </p> 2035023dd3b8Sopenharmony_ci <p>See <a href='#Pi'><code>Pi</code></a> for the precision limit of this method.</p> 2036023dd3b8Sopenharmony_ci <pre> 2037023dd3b8Sopenharmony_cix = new Decimal(0.5) 2038023dd3b8Sopenharmony_cix.tangent() // '0.54630248984379051326' 2039023dd3b8Sopenharmony_ciy = new Decimal(0.75) 2040023dd3b8Sopenharmony_ciy.tan() // '0.93159645994407246117'</pre> 2041023dd3b8Sopenharmony_ci 2042023dd3b8Sopenharmony_ci 2043023dd3b8Sopenharmony_ci 2044023dd3b8Sopenharmony_ci <h5 id="mul">times<code class='inset'>.times(x) <i>⇒ Decimal</i></code></h5> 2045023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i></p> 2046023dd3b8Sopenharmony_ci <p> 2047023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal times <code>x</code>, 2048023dd3b8Sopenharmony_ci rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding 2049023dd3b8Sopenharmony_ci mode <a href='#rounding'><code>rounding</code></a>. 2050023dd3b8Sopenharmony_ci </p> 2051023dd3b8Sopenharmony_ci <pre> 2052023dd3b8Sopenharmony_ci0.6 * 3 // 1.7999999999999998 2053023dd3b8Sopenharmony_cix = new Decimal(0.6) 2054023dd3b8Sopenharmony_ciy = x.times(3) // '1.8' 2055023dd3b8Sopenharmony_cinew Decimal('7e+500').times(y) // '1.26e+501'</pre> 2056023dd3b8Sopenharmony_ci 2057023dd3b8Sopenharmony_ci 2058023dd3b8Sopenharmony_ci 2059023dd3b8Sopenharmony_ci <h5 id="toBinary"> 2060023dd3b8Sopenharmony_ci toBinary<code class='inset'>.toBinary([sd [, rm]]) <i>⇒ string</i></code> 2061023dd3b8Sopenharmony_ci </h5> 2062023dd3b8Sopenharmony_ci <p> 2063023dd3b8Sopenharmony_ci <code>sd</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive<br /> 2064023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2065023dd3b8Sopenharmony_ci </p> 2066023dd3b8Sopenharmony_ci <p> 2067023dd3b8Sopenharmony_ci Returns a string representing the value of this Decimal in binary, rounded to <code>sd</code> 2068023dd3b8Sopenharmony_ci significant digits using rounding mode <code>rm</code>. 2069023dd3b8Sopenharmony_ci </p> 2070023dd3b8Sopenharmony_ci <p> 2071023dd3b8Sopenharmony_ci If <code>sd</code> is defined, the return value will use binary exponential notation. 2072023dd3b8Sopenharmony_ci </p> 2073023dd3b8Sopenharmony_ci <p> 2074023dd3b8Sopenharmony_ci If <code>sd</code> is omitted, the return value will be rounded to 2075023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits. 2076023dd3b8Sopenharmony_ci </p> 2077023dd3b8Sopenharmony_ci <p> 2078023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> 2079023dd3b8Sopenharmony_ci will be used. 2080023dd3b8Sopenharmony_ci </p> 2081023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>sd</code> or <code>rm</code> value.</p> 2082023dd3b8Sopenharmony_ci <pre> 2083023dd3b8Sopenharmony_cix = new Decimal(256) 2084023dd3b8Sopenharmony_cix.toBinary() // '0b100000000' 2085023dd3b8Sopenharmony_cix.toBinary(1) // '0b1p+8'</pre> 2086023dd3b8Sopenharmony_ci 2087023dd3b8Sopenharmony_ci 2088023dd3b8Sopenharmony_ci 2089023dd3b8Sopenharmony_ci <h5 id="toDP"> 2090023dd3b8Sopenharmony_ci toDecimalPlaces<code class='inset'>.toDP([dp [, rm]]) <i>⇒ Decimal</i></code> 2091023dd3b8Sopenharmony_ci </h5> 2092023dd3b8Sopenharmony_ci <p> 2093023dd3b8Sopenharmony_ci <code>dp</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive<br /> 2094023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive. 2095023dd3b8Sopenharmony_ci </p> 2096023dd3b8Sopenharmony_ci <p> 2097023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal rounded to <code>dp</code> 2098023dd3b8Sopenharmony_ci decimal places using rounding mode <code>rm</code>. 2099023dd3b8Sopenharmony_ci </p> 2100023dd3b8Sopenharmony_ci <p> 2101023dd3b8Sopenharmony_ci If <code>dp</code> is omitted, the return value will have the same value as this Decimal. 2102023dd3b8Sopenharmony_ci </p> 2103023dd3b8Sopenharmony_ci <p> 2104023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> 2105023dd3b8Sopenharmony_ci is used. 2106023dd3b8Sopenharmony_ci </p> 2107023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>dp</code> or <code>rm</code> value.</p> 2108023dd3b8Sopenharmony_ci <pre> 2109023dd3b8Sopenharmony_cix = new Decimal(12.34567) 2110023dd3b8Sopenharmony_cix.toDecimalPlaces(0) // '12' 2111023dd3b8Sopenharmony_cix.toDecimalPlaces(1, Decimal.ROUND_UP) // '12.4' 2112023dd3b8Sopenharmony_ci 2113023dd3b8Sopenharmony_ciy = new Decimal(9876.54321) 2114023dd3b8Sopenharmony_ciy.toDP(3) // '9876.543' 2115023dd3b8Sopenharmony_ciy.toDP(1, 0) // '9876.6' 2116023dd3b8Sopenharmony_ciy.toDP(1, Decimal.ROUND_DOWN) // '9876.5'</pre> 2117023dd3b8Sopenharmony_ci 2118023dd3b8Sopenharmony_ci 2119023dd3b8Sopenharmony_ci 2120023dd3b8Sopenharmony_ci <h5 id="toExponential"> 2121023dd3b8Sopenharmony_ci toExponential<code class='inset'>.toExponential([dp [, rm]]) <i>⇒ string</i></code> 2122023dd3b8Sopenharmony_ci </h5> 2123023dd3b8Sopenharmony_ci <p> 2124023dd3b8Sopenharmony_ci <code>dp</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive<br /> 2125023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2126023dd3b8Sopenharmony_ci </p> 2127023dd3b8Sopenharmony_ci <p> 2128023dd3b8Sopenharmony_ci Returns a string representing the value of this Decimal in exponential notation rounded 2129023dd3b8Sopenharmony_ci using rounding mode <code>rm</code> to <code>dp</code> decimal places, i.e with one digit 2130023dd3b8Sopenharmony_ci before the decimal point and <code>dp</code> digits after it. 2131023dd3b8Sopenharmony_ci </p> 2132023dd3b8Sopenharmony_ci <p> 2133023dd3b8Sopenharmony_ci If the value of this Decimal in exponential notation has fewer than <code>dp</code> fraction 2134023dd3b8Sopenharmony_ci digits, the return value will be appended with zeros accordingly. 2135023dd3b8Sopenharmony_ci </p> 2136023dd3b8Sopenharmony_ci <p> 2137023dd3b8Sopenharmony_ci If <code>dp</code> is omitted, the number of digits after the decimal point defaults to the 2138023dd3b8Sopenharmony_ci minimum number of digits necessary to represent the value exactly. 2139023dd3b8Sopenharmony_ci </p> 2140023dd3b8Sopenharmony_ci <p> 2141023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> is 2142023dd3b8Sopenharmony_ci used. 2143023dd3b8Sopenharmony_ci </p> 2144023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>dp</code> or <code>rm</code> value.</p> 2145023dd3b8Sopenharmony_ci <pre> 2146023dd3b8Sopenharmony_cix = 45.6 2147023dd3b8Sopenharmony_ciy = new Decimal(x) 2148023dd3b8Sopenharmony_cix.toExponential() // '4.56e+1' 2149023dd3b8Sopenharmony_ciy.toExponential() // '4.56e+1' 2150023dd3b8Sopenharmony_cix.toExponential(0) // '5e+1' 2151023dd3b8Sopenharmony_ciy.toExponential(0) // '5e+1' 2152023dd3b8Sopenharmony_cix.toExponential(1) // '4.6e+1' 2153023dd3b8Sopenharmony_ciy.toExponential(1) // '4.6e+1' 2154023dd3b8Sopenharmony_ciy.toExponential(1, Decimal.ROUND_DOWN) // '4.5e+1' 2155023dd3b8Sopenharmony_cix.toExponential(3) // '4.560e+1' 2156023dd3b8Sopenharmony_ciy.toExponential(3) // '4.560e+1'</pre> 2157023dd3b8Sopenharmony_ci 2158023dd3b8Sopenharmony_ci 2159023dd3b8Sopenharmony_ci 2160023dd3b8Sopenharmony_ci <h5 id="toFixed"> 2161023dd3b8Sopenharmony_ci toFixed<code class='inset'>.toFixed([dp [, rm]]) <i>⇒ string</i></code> 2162023dd3b8Sopenharmony_ci </h5> 2163023dd3b8Sopenharmony_ci <p> 2164023dd3b8Sopenharmony_ci <code>dp</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive<br /> 2165023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2166023dd3b8Sopenharmony_ci </p> 2167023dd3b8Sopenharmony_ci <p> 2168023dd3b8Sopenharmony_ci Returns a string representing the value of this Decimal in normal (fixed-point) notation 2169023dd3b8Sopenharmony_ci rounded to <code>dp</code> decimal places using rounding mode <code>rm</code>. 2170023dd3b8Sopenharmony_ci </p> 2171023dd3b8Sopenharmony_ci <p> 2172023dd3b8Sopenharmony_ci If the value of this Decimal in normal notation has fewer than <code>dp</code> fraction 2173023dd3b8Sopenharmony_ci digits, the return value will be appended with zeros accordingly. 2174023dd3b8Sopenharmony_ci </p> 2175023dd3b8Sopenharmony_ci <p> 2176023dd3b8Sopenharmony_ci Unlike <code>Number.prototype.toFixed</code>, which returns exponential notation if a number 2177023dd3b8Sopenharmony_ci is greater or equal to <code>10<sup>21</sup></code>, this method will always return normal 2178023dd3b8Sopenharmony_ci notation. 2179023dd3b8Sopenharmony_ci </p> 2180023dd3b8Sopenharmony_ci <p> 2181023dd3b8Sopenharmony_ci If <code>dp</code> is omitted, the return value will be unrounded and in normal notation. This 2182023dd3b8Sopenharmony_ci is unlike <code>Number.prototype.toFixed</code>, which returns the value to zero decimal 2183023dd3b8Sopenharmony_ci places, but is useful when because of the current 2184023dd3b8Sopenharmony_ci <a href="#toExpNeg"><code>toExpNeg</code></a> or 2185023dd3b8Sopenharmony_ci <a href="#toExpPos"><code>toExpNeg</code></a> values, 2186023dd3b8Sopenharmony_ci <code><a href='#toString'>toString</a></code> returns exponential notation. 2187023dd3b8Sopenharmony_ci </p> 2188023dd3b8Sopenharmony_ci <p> 2189023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> is 2190023dd3b8Sopenharmony_ci used. 2191023dd3b8Sopenharmony_ci </p> 2192023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>dp</code> or <code>rm</code> value.</p> 2193023dd3b8Sopenharmony_ci <pre> 2194023dd3b8Sopenharmony_cix = 3.456 2195023dd3b8Sopenharmony_ciy = new Decimal(x) 2196023dd3b8Sopenharmony_cix.toFixed() // '3' 2197023dd3b8Sopenharmony_ciy.toFixed() // '3.456' 2198023dd3b8Sopenharmony_ciy.toFixed(0) // '3' 2199023dd3b8Sopenharmony_cix.toFixed(2) // '3.46' 2200023dd3b8Sopenharmony_ciy.toFixed(2) // '3.46' 2201023dd3b8Sopenharmony_ciy.toFixed(2, Decimal.ROUND_DOWN) // '3.45' 2202023dd3b8Sopenharmony_cix.toFixed(5) // '3.45600' 2203023dd3b8Sopenharmony_ciy.toFixed(5) // '3.45600'</pre> 2204023dd3b8Sopenharmony_ci 2205023dd3b8Sopenharmony_ci 2206023dd3b8Sopenharmony_ci 2207023dd3b8Sopenharmony_ci <h5 id="toFraction"> 2208023dd3b8Sopenharmony_ci toFraction 2209023dd3b8Sopenharmony_ci <code class='inset'>.toFraction([max_denominator]) <i>⇒ [Decimal, Decimal]</i></code> 2210023dd3b8Sopenharmony_ci </h5> 2211023dd3b8Sopenharmony_ci <p> 2212023dd3b8Sopenharmony_ci <code>max_denominator</code>: <i>number|string|Decimal</i>: <code>1</code> >= integer < 2213023dd3b8Sopenharmony_ci <code>Infinity</code> 2214023dd3b8Sopenharmony_ci </p> 2215023dd3b8Sopenharmony_ci <p> 2216023dd3b8Sopenharmony_ci Returns an array of two Decimals representing the value of this Decimal as a simple fraction 2217023dd3b8Sopenharmony_ci with an integer numerator and an integer denominator. The denominator will be a positive 2218023dd3b8Sopenharmony_ci non-zero value less than or equal to <code>max_denominator</code>. 2219023dd3b8Sopenharmony_ci </p> 2220023dd3b8Sopenharmony_ci <p> 2221023dd3b8Sopenharmony_ci If a maximum denominator is omitted, the denominator will be the lowest value necessary to 2222023dd3b8Sopenharmony_ci represent the number exactly. 2223023dd3b8Sopenharmony_ci </p> 2224023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>max_denominator</code> value.</p> 2225023dd3b8Sopenharmony_ci <pre> 2226023dd3b8Sopenharmony_cix = new Decimal(1.75) 2227023dd3b8Sopenharmony_cix.toFraction() // '7, 4' 2228023dd3b8Sopenharmony_ci 2229023dd3b8Sopenharmony_cipi = new Decimal('3.14159265358') 2230023dd3b8Sopenharmony_cipi.toFraction() // '157079632679,50000000000' 2231023dd3b8Sopenharmony_cipi.toFraction(100000) // '312689, 99532' 2232023dd3b8Sopenharmony_cipi.toFraction(10000) // '355, 113' 2233023dd3b8Sopenharmony_cipi.toFraction(100) // '311, 99' 2234023dd3b8Sopenharmony_cipi.toFraction(10) // '22, 7' 2235023dd3b8Sopenharmony_cipi.toFraction(1) // '3, 1'</pre> 2236023dd3b8Sopenharmony_ci 2237023dd3b8Sopenharmony_ci 2238023dd3b8Sopenharmony_ci 2239023dd3b8Sopenharmony_ci <h5 id="toHex"> 2240023dd3b8Sopenharmony_ci toHexadecimal<code class='inset'>.toHex([sd [, rm]]) <i>⇒ string</i></code> 2241023dd3b8Sopenharmony_ci </h5> 2242023dd3b8Sopenharmony_ci <p> 2243023dd3b8Sopenharmony_ci <code>sd</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive<br /> 2244023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2245023dd3b8Sopenharmony_ci </p> 2246023dd3b8Sopenharmony_ci <p> 2247023dd3b8Sopenharmony_ci Returns a string representing the value of this Decimal in hexadecimal, rounded to 2248023dd3b8Sopenharmony_ci <code>sd</code> significant digits using rounding mode <code>rm</code>. 2249023dd3b8Sopenharmony_ci </p> 2250023dd3b8Sopenharmony_ci <p> 2251023dd3b8Sopenharmony_ci If <code>sd</code> is defined, the return value will use binary exponential notation. 2252023dd3b8Sopenharmony_ci </p> 2253023dd3b8Sopenharmony_ci <p> 2254023dd3b8Sopenharmony_ci If <code>sd</code> is omitted, the return value will be rounded to 2255023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits. 2256023dd3b8Sopenharmony_ci </p> 2257023dd3b8Sopenharmony_ci <p> 2258023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> 2259023dd3b8Sopenharmony_ci will be used. 2260023dd3b8Sopenharmony_ci </p> 2261023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>sd</code> or <code>rm</code> value.</p> 2262023dd3b8Sopenharmony_ci <pre> 2263023dd3b8Sopenharmony_cix = new Decimal(256) 2264023dd3b8Sopenharmony_cix.toHexadecimal() // '0x100' 2265023dd3b8Sopenharmony_cix.toHex(1) // '0x1p+8'</pre> 2266023dd3b8Sopenharmony_ci 2267023dd3b8Sopenharmony_ci 2268023dd3b8Sopenharmony_ci 2269023dd3b8Sopenharmony_ci <h5 id="toJSON">toJSON<code class='inset'>.toJSON() <i>⇒ string</i></code></h5> 2270023dd3b8Sopenharmony_ci <p>As <a href='#valueOf'><code>valueOf</code></a>.</p> 2271023dd3b8Sopenharmony_ci 2272023dd3b8Sopenharmony_ci 2273023dd3b8Sopenharmony_ci 2274023dd3b8Sopenharmony_ci <h5 id="toNearest"> 2275023dd3b8Sopenharmony_ci toNearest<code class='inset'>.toNearest(x [, rm]) <i>⇒ Decimal</i></code> 2276023dd3b8Sopenharmony_ci </h5> 2277023dd3b8Sopenharmony_ci <p> 2278023dd3b8Sopenharmony_ci <code>x</code>: <i>number|string|Decimal</i><br /> 2279023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2280023dd3b8Sopenharmony_ci </p> 2281023dd3b8Sopenharmony_ci <p> 2282023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the nearest multiple of <code>x</code> in the direction 2283023dd3b8Sopenharmony_ci of rounding mode <code>rm</code>, or <a href='#rounding'><code>rounding</code></a> if 2284023dd3b8Sopenharmony_ci <code>rm</code> is omitted, to the value of this Decimal. 2285023dd3b8Sopenharmony_ci </p> 2286023dd3b8Sopenharmony_ci <p> 2287023dd3b8Sopenharmony_ci The return value will always have the same sign as this Decimal, unless either this Decimal 2288023dd3b8Sopenharmony_ci or <code>x</code> is <code>NaN</code>, in which case the return value will be also be 2289023dd3b8Sopenharmony_ci <code>NaN</code>. 2290023dd3b8Sopenharmony_ci </p> 2291023dd3b8Sopenharmony_ci <p> 2292023dd3b8Sopenharmony_ci The return value is not affected by the value of the 2293023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 2294023dd3b8Sopenharmony_ci </p> 2295023dd3b8Sopenharmony_ci <pre> 2296023dd3b8Sopenharmony_cix = new Decimal(1.39) 2297023dd3b8Sopenharmony_cix.toNearest(0.25) // '1.5' 2298023dd3b8Sopenharmony_ci 2299023dd3b8Sopenharmony_ciy = new Decimal(9.499) 2300023dd3b8Sopenharmony_ciy.toNearest(0.5, Decimal.ROUND_UP) // '9.5' 2301023dd3b8Sopenharmony_ciy.toNearest(0.5, Decimal.ROUND_DOWN) // '9'</pre> 2302023dd3b8Sopenharmony_ci 2303023dd3b8Sopenharmony_ci 2304023dd3b8Sopenharmony_ci 2305023dd3b8Sopenharmony_ci <h5 id="toNumber">toNumber<code class='inset'>.toNumber() <i>⇒ number</i></code></h5> 2306023dd3b8Sopenharmony_ci <p>Returns the value of this Decimal converted to a primitive number.</p> 2307023dd3b8Sopenharmony_ci <p> 2308023dd3b8Sopenharmony_ci Type coercion with, for example, JavaScript's unary plus operator will also work, except that 2309023dd3b8Sopenharmony_ci a Decimal with the value minus zero will convert to positive zero. 2310023dd3b8Sopenharmony_ci </p> 2311023dd3b8Sopenharmony_ci <pre> 2312023dd3b8Sopenharmony_cix = new Decimal(456.789) 2313023dd3b8Sopenharmony_cix.toNumber() // 456.789 2314023dd3b8Sopenharmony_ci+x // 456.789 2315023dd3b8Sopenharmony_ci 2316023dd3b8Sopenharmony_ciy = new Decimal('45987349857634085409857349856430985') 2317023dd3b8Sopenharmony_ciy.toNumber() // 4.598734985763409e+34 2318023dd3b8Sopenharmony_ci 2319023dd3b8Sopenharmony_ciz = new Decimal(-0) 2320023dd3b8Sopenharmony_ci1 / +z // Infinity 2321023dd3b8Sopenharmony_ci1 / z.toNumber() // -Infinity</pre> 2322023dd3b8Sopenharmony_ci 2323023dd3b8Sopenharmony_ci 2324023dd3b8Sopenharmony_ci 2325023dd3b8Sopenharmony_ci <h5 id="toOctal"> 2326023dd3b8Sopenharmony_ci toOctal<code class='inset'>.toOctal([sd [, rm]]) <i>⇒ string</i></code> 2327023dd3b8Sopenharmony_ci </h5> 2328023dd3b8Sopenharmony_ci <p> 2329023dd3b8Sopenharmony_ci <code>sd</code>: <i>number</i>: integer, <code>0</code> to <code>1e+9</code> inclusive<br /> 2330023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2331023dd3b8Sopenharmony_ci </p> 2332023dd3b8Sopenharmony_ci <p> 2333023dd3b8Sopenharmony_ci Returns a string representing the value of this Decimal in octal, rounded to <code>sd</code> 2334023dd3b8Sopenharmony_ci significant digits using rounding mode <code>rm</code>. 2335023dd3b8Sopenharmony_ci </p> 2336023dd3b8Sopenharmony_ci <p> 2337023dd3b8Sopenharmony_ci If <code>sd</code> is defined, the return value will use binary exponential notation. 2338023dd3b8Sopenharmony_ci </p> 2339023dd3b8Sopenharmony_ci <p> 2340023dd3b8Sopenharmony_ci If <code>sd</code> is omitted, the return value will be rounded to 2341023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits. 2342023dd3b8Sopenharmony_ci </p> 2343023dd3b8Sopenharmony_ci <p> 2344023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> 2345023dd3b8Sopenharmony_ci will be used. 2346023dd3b8Sopenharmony_ci </p> 2347023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>sd</code> or <code>rm</code> value.</p> 2348023dd3b8Sopenharmony_ci <pre> 2349023dd3b8Sopenharmony_cix = new Decimal(256) 2350023dd3b8Sopenharmony_cix.toOctal() // '0o400' 2351023dd3b8Sopenharmony_cix.toOctal(1) // '0o1p+8'</pre> 2352023dd3b8Sopenharmony_ci 2353023dd3b8Sopenharmony_ci 2354023dd3b8Sopenharmony_ci 2355023dd3b8Sopenharmony_ci <h5 id="pow">toPower<code class='inset'>.pow(x) <i>⇒ Decimal</i></code></h5> 2356023dd3b8Sopenharmony_ci <p><code>x</code>: <i>number|string|Decimal</i>: integer or non-integer</p> 2357023dd3b8Sopenharmony_ci <p> 2358023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal raised to the power 2359023dd3b8Sopenharmony_ci <code>x</code>, rounded to <a href='#precision'><code>precision</code></a> significant digits 2360023dd3b8Sopenharmony_ci using rounding mode <a href='#rounding'><code>rounding</code></a>. 2361023dd3b8Sopenharmony_ci </p> 2362023dd3b8Sopenharmony_ci <p> 2363023dd3b8Sopenharmony_ci The performance of this method degrades exponentially with increasing digits. For 2364023dd3b8Sopenharmony_ci non-integer exponents in particular, the performance of this method may not be adequate. 2365023dd3b8Sopenharmony_ci </p> 2366023dd3b8Sopenharmony_ci <pre> 2367023dd3b8Sopenharmony_ciMath.pow(0.7, 2) // 0.48999999999999994 2368023dd3b8Sopenharmony_cix = new Decimal(0.7) 2369023dd3b8Sopenharmony_cix.toPower(2) // '0.49' 2370023dd3b8Sopenharmony_cinew Decimal(3).pow(-2) // '0.11111111111111111111' 2371023dd3b8Sopenharmony_ci 2372023dd3b8Sopenharmony_cinew Decimal(1217652.23).pow('98765.489305603941') 2373023dd3b8Sopenharmony_ci// '4.8227010515242461181e+601039'</pre> 2374023dd3b8Sopenharmony_ci <p><i>Is the pow function guaranteed to be correctly rounded?</i></p> 2375023dd3b8Sopenharmony_ci <p> 2376023dd3b8Sopenharmony_ci The return value will <i>almost always</i> be correctly rounded, i.e. rounded as if the result 2377023dd3b8Sopenharmony_ci was first calculated to an infinite number of correct digits before rounding. If a result is 2378023dd3b8Sopenharmony_ci incorrectly rounded the maximum error will be <code>1</code> <i>ulp</i> (unit in the last 2379023dd3b8Sopenharmony_ci place). 2380023dd3b8Sopenharmony_ci </p> 2381023dd3b8Sopenharmony_ci <p>For non-integer and larger exponents this method uses the formula</p> 2382023dd3b8Sopenharmony_ci <blockquote><code>x<sup>y</sup> = exp(y*ln(x))</code></blockquote> 2383023dd3b8Sopenharmony_ci <p> 2384023dd3b8Sopenharmony_ci As the mathematical return values of the <a href='#exp'><code>exp</code></a> and 2385023dd3b8Sopenharmony_ci <a href='#ln'><code>ln</code></a> functions are both non-terminating (excluding arguments of 2386023dd3b8Sopenharmony_ci <code>0</code> or <code>1</code>), the values of the Decimals returned by the functions as 2387023dd3b8Sopenharmony_ci implemented by this library will necessarily be rounded approximations, which means that there 2388023dd3b8Sopenharmony_ci can be no guarantee of correct rounding when they are combined in the above formula. 2389023dd3b8Sopenharmony_ci </p> 2390023dd3b8Sopenharmony_ci <p> 2391023dd3b8Sopenharmony_ci The return value may, depending on the rounding mode, be incorrectly rounded only if the first 2392023dd3b8Sopenharmony_ci <code>15</code> rounding digits are <code>15</code> zeros (and there are non-zero digits 2393023dd3b8Sopenharmony_ci following at some point), or <code>15</code> nines, or a <code>5</code> or <code>4</code> 2394023dd3b8Sopenharmony_ci followed by <code>14</code> nines. 2395023dd3b8Sopenharmony_ci </p> 2396023dd3b8Sopenharmony_ci <p> 2397023dd3b8Sopenharmony_ci Therefore, assuming the first <code>15</code> rounding digits are each equally likely to be 2398023dd3b8Sopenharmony_ci any digit, <code>0-9</code>, the probability of an incorrectly rounded result is less than 2399023dd3b8Sopenharmony_ci <code>1</code> in <code>250,000,000,000,000</code>. 2400023dd3b8Sopenharmony_ci </p> 2401023dd3b8Sopenharmony_ci <p> 2402023dd3b8Sopenharmony_ci An example of incorrect rounding: 2403023dd3b8Sopenharmony_ci </p> 2404023dd3b8Sopenharmony_ci <pre> 2405023dd3b8Sopenharmony_ciDecimal.set({ precision: 20, rounding: 1 }) 2406023dd3b8Sopenharmony_cinew Decimal(28).pow('6.166675020000903537297764507632802193308677149') 2407023dd3b8Sopenharmony_ci// 839756321.64088511</pre> 2408023dd3b8Sopenharmony_ci <p>As the exact mathematical result begins</p> 2409023dd3b8Sopenharmony_ci <pre>839756321.6408851099999999999999999999999999998969466049426031167...</pre> 2410023dd3b8Sopenharmony_ci <p> 2411023dd3b8Sopenharmony_ci and the rounding mode is set to <code><a href='#modes'>ROUND_DOWN</a></code>, the correct 2412023dd3b8Sopenharmony_ci return value should be 2413023dd3b8Sopenharmony_ci </p> 2414023dd3b8Sopenharmony_ci <pre>839756321.64088510999</pre> 2415023dd3b8Sopenharmony_ci 2416023dd3b8Sopenharmony_ci 2417023dd3b8Sopenharmony_ci 2418023dd3b8Sopenharmony_ci <h5 id="toPrecision"> 2419023dd3b8Sopenharmony_ci toPrecision<code class='inset'>.toPrecision([sd [, rm]]) <i>⇒ string</i></code> 2420023dd3b8Sopenharmony_ci </h5> 2421023dd3b8Sopenharmony_ci <p> 2422023dd3b8Sopenharmony_ci <code>sd</code>: <i>number</i>: integer, <code>1</code> to <code>1e+9</code> inclusive<br /> 2423023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive 2424023dd3b8Sopenharmony_ci </p> 2425023dd3b8Sopenharmony_ci <p> 2426023dd3b8Sopenharmony_ci Returns a string representing the value of this Decimal rounded to <code>sd</code> significant 2427023dd3b8Sopenharmony_ci digits using rounding mode <code>rm</code>. 2428023dd3b8Sopenharmony_ci </p> 2429023dd3b8Sopenharmony_ci <p> 2430023dd3b8Sopenharmony_ci If <code>sd</code> is less than the number of digits necessary to represent the integer part 2431023dd3b8Sopenharmony_ci of the value in normal (fixed-point) notation, then exponential notation is used. 2432023dd3b8Sopenharmony_ci </p> 2433023dd3b8Sopenharmony_ci <p> 2434023dd3b8Sopenharmony_ci If <code>sd</code> is omitted, the return value is the same as 2435023dd3b8Sopenharmony_ci <code><a href='#toString'>toString</a></code>. 2436023dd3b8Sopenharmony_ci </p> 2437023dd3b8Sopenharmony_ci <p> 2438023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> is 2439023dd3b8Sopenharmony_ci used. 2440023dd3b8Sopenharmony_ci </p> 2441023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>sd</code> or <code>rm</code> value.</p> 2442023dd3b8Sopenharmony_ci <pre> 2443023dd3b8Sopenharmony_cix = 45.6 2444023dd3b8Sopenharmony_ciy = new Decimal(x) 2445023dd3b8Sopenharmony_cix.toPrecision() // '45.6' 2446023dd3b8Sopenharmony_ciy.toPrecision() // '45.6' 2447023dd3b8Sopenharmony_cix.toPrecision(1) // '5e+1' 2448023dd3b8Sopenharmony_ciy.toPrecision(1) // '5e+1' 2449023dd3b8Sopenharmony_ciy.toPrecision(2, Decimal.ROUND_UP) // '46' 2450023dd3b8Sopenharmony_ciy.toPrecision(2, Decimal.ROUND_DOWN) // '45' 2451023dd3b8Sopenharmony_cix.toPrecision(5) // '45.600' 2452023dd3b8Sopenharmony_ciy.toPrecision(5) // '45.600'</pre> 2453023dd3b8Sopenharmony_ci 2454023dd3b8Sopenharmony_ci 2455023dd3b8Sopenharmony_ci 2456023dd3b8Sopenharmony_ci <h5 id="toSD"> 2457023dd3b8Sopenharmony_ci toSignificantDigits<code class='inset'>.toSD([sd [, rm]]) <i>⇒ Decimal</i></code> 2458023dd3b8Sopenharmony_ci </h5> 2459023dd3b8Sopenharmony_ci <p> 2460023dd3b8Sopenharmony_ci <code>sd</code>: <i>number</i>: integer, <code>1</code> to <code>1e+9</code> inclusive.<br /> 2461023dd3b8Sopenharmony_ci <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive. 2462023dd3b8Sopenharmony_ci </p> 2463023dd3b8Sopenharmony_ci <p> 2464023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal rounded to <code>sd</code> 2465023dd3b8Sopenharmony_ci significant digits using rounding mode <code>rm</code>. 2466023dd3b8Sopenharmony_ci </p> 2467023dd3b8Sopenharmony_ci <p> 2468023dd3b8Sopenharmony_ci If <code>sd</code> is omitted, the return value will be rounded to 2469023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> significant digits. 2470023dd3b8Sopenharmony_ci </p> 2471023dd3b8Sopenharmony_ci <p> 2472023dd3b8Sopenharmony_ci If <code>rm</code> is omitted, rounding mode <a href='#rounding'><code>rounding</code></a> 2473023dd3b8Sopenharmony_ci will be used. 2474023dd3b8Sopenharmony_ci </p> 2475023dd3b8Sopenharmony_ci <p>Throws on an invalid <code>sd</code> or <code>rm</code> value.</p> 2476023dd3b8Sopenharmony_ci <pre> 2477023dd3b8Sopenharmony_ciDecimal.set({ precision: 5, rounding: 4 }) 2478023dd3b8Sopenharmony_cix = new Decimal(9876.54321) 2479023dd3b8Sopenharmony_ci 2480023dd3b8Sopenharmony_cix.toSignificantDigits() // '9876.5' 2481023dd3b8Sopenharmony_cix.toSignificantDigits(6) // '9876.54' 2482023dd3b8Sopenharmony_cix.toSignificantDigits(6, Decimal.ROUND_UP) // '9876.55' 2483023dd3b8Sopenharmony_cix.toSD(2) // '9900' 2484023dd3b8Sopenharmony_cix.toSD(2, 1) // '9800' 2485023dd3b8Sopenharmony_cix // '9876.54321'</pre> 2486023dd3b8Sopenharmony_ci 2487023dd3b8Sopenharmony_ci 2488023dd3b8Sopenharmony_ci 2489023dd3b8Sopenharmony_ci <h5 id="toString">toString<code class='inset'>.toString() <i>⇒ string</i></code></h5> 2490023dd3b8Sopenharmony_ci <p>Returns a string representing the value of this Decimal.</p> 2491023dd3b8Sopenharmony_ci <p> 2492023dd3b8Sopenharmony_ci If this Decimal has a positive exponent that is equal to or greater than 2493023dd3b8Sopenharmony_ci <a href="#toExpPos"><code>toExpPos</code></a>, or a negative exponent equal to or less than 2494023dd3b8Sopenharmony_ci <a href="#toExpPos"><code>toExpNeg</code></a>, then exponential notation will be returned. 2495023dd3b8Sopenharmony_ci </p> 2496023dd3b8Sopenharmony_ci <pre> 2497023dd3b8Sopenharmony_cix = new Decimal(750000) 2498023dd3b8Sopenharmony_cix.toString() // '750000' 2499023dd3b8Sopenharmony_ciDecimal.set({ toExpPos: 5 }) 2500023dd3b8Sopenharmony_cix.toString() // '7.5e+5' 2501023dd3b8Sopenharmony_ci 2502023dd3b8Sopenharmony_ciDecimal.set({ precision: 4 }) 2503023dd3b8Sopenharmony_ciy = new Decimal('1.23456789') 2504023dd3b8Sopenharmony_ciy.toString() // '1.23456789'</pre> 2505023dd3b8Sopenharmony_ci 2506023dd3b8Sopenharmony_ci 2507023dd3b8Sopenharmony_ci 2508023dd3b8Sopenharmony_ci <h5 id="trunc">truncated<code class='inset'>.trunc() <i>⇒ Decimal</i></code></h5> 2509023dd3b8Sopenharmony_ci <p> 2510023dd3b8Sopenharmony_ci Returns a new Decimal whose value is the value of this Decimal truncated to a whole number. 2511023dd3b8Sopenharmony_ci </p> 2512023dd3b8Sopenharmony_ci <p> 2513023dd3b8Sopenharmony_ci The return value is not affected by the value of the 2514023dd3b8Sopenharmony_ci <a href='#precision'><code>precision</code></a> setting. 2515023dd3b8Sopenharmony_ci </p> 2516023dd3b8Sopenharmony_ci <pre> 2517023dd3b8Sopenharmony_cix = new Decimal(123.456) 2518023dd3b8Sopenharmony_cix.truncated() // '123' 2519023dd3b8Sopenharmony_ciy = new Decimal(-12.3) 2520023dd3b8Sopenharmony_ciy.trunc() // '-12'</pre> 2521023dd3b8Sopenharmony_ci 2522023dd3b8Sopenharmony_ci 2523023dd3b8Sopenharmony_ci 2524023dd3b8Sopenharmony_ci <h5 id="valueOf">valueOf<code class='inset'>.valueOf() <i>⇒ string</i></code></h5> 2525023dd3b8Sopenharmony_ci <p>As <a href='#toString'><code>toString</code></a>, but zero is signed.</p> 2526023dd3b8Sopenharmony_ci <pre> 2527023dd3b8Sopenharmony_cix = new Decimal(-0) 2528023dd3b8Sopenharmony_cix.valueOf() // '-0'</pre> 2529023dd3b8Sopenharmony_ci 2530023dd3b8Sopenharmony_ci 2531023dd3b8Sopenharmony_ci 2532023dd3b8Sopenharmony_ci 2533023dd3b8Sopenharmony_ci 2534023dd3b8Sopenharmony_ci 2535023dd3b8Sopenharmony_ci <h4 id="instance-properties">Properties</h4> 2536023dd3b8Sopenharmony_ci <p> 2537023dd3b8Sopenharmony_ci The value of a Decimal is stored in a normalised base <code>10000000</code> floating point 2538023dd3b8Sopenharmony_ci format. 2539023dd3b8Sopenharmony_ci </p> 2540023dd3b8Sopenharmony_ci <p> 2541023dd3b8Sopenharmony_ci A Decimal instance is an object with three properties: 2542023dd3b8Sopenharmony_ci </p> 2543023dd3b8Sopenharmony_ci <table> 2544023dd3b8Sopenharmony_ci <tr> 2545023dd3b8Sopenharmony_ci <th>Property</th> 2546023dd3b8Sopenharmony_ci <th>Description</th> 2547023dd3b8Sopenharmony_ci <th>Type</th> 2548023dd3b8Sopenharmony_ci <th>Value</th> 2549023dd3b8Sopenharmony_ci </tr> 2550023dd3b8Sopenharmony_ci <tr> 2551023dd3b8Sopenharmony_ci <td class='centre' id='digits'><b>d</b></td> 2552023dd3b8Sopenharmony_ci <td>digits</td> 2553023dd3b8Sopenharmony_ci <td><i>number</i><code style='color:#000'>[]</code></td> 2554023dd3b8Sopenharmony_ci <td> Array of integers, each <code>0</code> - <code>1e7</code>, or <code>null</code></td> 2555023dd3b8Sopenharmony_ci </tr> 2556023dd3b8Sopenharmony_ci <tr> 2557023dd3b8Sopenharmony_ci <td class='centre' id='exponent'><b>e</b></td> 2558023dd3b8Sopenharmony_ci <td>exponent</td> 2559023dd3b8Sopenharmony_ci <td><i>number</i></td> 2560023dd3b8Sopenharmony_ci <td>Integer, <code>-9e15</code> to <code>9e15</code> inclusive, or <code>NaN</code></td> 2561023dd3b8Sopenharmony_ci </tr> 2562023dd3b8Sopenharmony_ci <tr> 2563023dd3b8Sopenharmony_ci <td class='centre' id='sign'><b>s</b></td> 2564023dd3b8Sopenharmony_ci <td>sign</td> 2565023dd3b8Sopenharmony_ci <td><i>number</i></td> 2566023dd3b8Sopenharmony_ci <td><code>-1</code>, <code>1</code>, or <code>NaN</code></td> 2567023dd3b8Sopenharmony_ci </tr> 2568023dd3b8Sopenharmony_ci </table> 2569023dd3b8Sopenharmony_ci <p>All the properties are best considered to be read-only.</p> 2570023dd3b8Sopenharmony_ci <p> 2571023dd3b8Sopenharmony_ci As with JavaScript numbers, the original exponent and fractional trailing zeros of a value 2572023dd3b8Sopenharmony_ci are not preserved. 2573023dd3b8Sopenharmony_ci </p> 2574023dd3b8Sopenharmony_ci <pre> 2575023dd3b8Sopenharmony_cix = new Decimal(0.123) // '0.123' 2576023dd3b8Sopenharmony_cix.toExponential() // '1.23e-1' 2577023dd3b8Sopenharmony_cix.d // [ 1230000 ] 2578023dd3b8Sopenharmony_cix.e // -1 2579023dd3b8Sopenharmony_cix.s // 1 2580023dd3b8Sopenharmony_ci 2581023dd3b8Sopenharmony_ciy = new Number(-123.4567000e+2) // '-12345.67' 2582023dd3b8Sopenharmony_ciy.toExponential() // '-1.234567e+4' 2583023dd3b8Sopenharmony_ciz = new Decimal('-123.4567000e+2') // '-12345.67' 2584023dd3b8Sopenharmony_ciz.toExponential() // '-1.234567e+4' 2585023dd3b8Sopenharmony_ciz.d // [ 12345, 6700000 ] 2586023dd3b8Sopenharmony_ciz.e // 4 2587023dd3b8Sopenharmony_ciz.s // -1</pre> 2588023dd3b8Sopenharmony_ci 2589023dd3b8Sopenharmony_ci 2590023dd3b8Sopenharmony_ci 2591023dd3b8Sopenharmony_ci <h4 id="zero-nan-infinity">Zero, NaN and Infinity</h4> 2592023dd3b8Sopenharmony_ci <p> 2593023dd3b8Sopenharmony_ci The table below shows how <code>±0</code>, <code>NaN</code> and 2594023dd3b8Sopenharmony_ci <code>±Infinity</code> are stored. 2595023dd3b8Sopenharmony_ci </p> 2596023dd3b8Sopenharmony_ci <table> 2597023dd3b8Sopenharmony_ci <tr> 2598023dd3b8Sopenharmony_ci <th> </th> 2599023dd3b8Sopenharmony_ci <th>±0</th> 2600023dd3b8Sopenharmony_ci <th>NaN</th> 2601023dd3b8Sopenharmony_ci <th>±Infinity</th> 2602023dd3b8Sopenharmony_ci </tr> 2603023dd3b8Sopenharmony_ci <tr> 2604023dd3b8Sopenharmony_ci <td><b> d </b></td> 2605023dd3b8Sopenharmony_ci <td><code>[0]</code></td> 2606023dd3b8Sopenharmony_ci <td><code>null</code></td> 2607023dd3b8Sopenharmony_ci <td><code>null</code></td> 2608023dd3b8Sopenharmony_ci </tr> 2609023dd3b8Sopenharmony_ci <tr> 2610023dd3b8Sopenharmony_ci <td><b> e </b></td> 2611023dd3b8Sopenharmony_ci <td><code>0</code></td> 2612023dd3b8Sopenharmony_ci <td><code>NaN</code></td> 2613023dd3b8Sopenharmony_ci <td><code>NaN</code></td> 2614023dd3b8Sopenharmony_ci </tr> 2615023dd3b8Sopenharmony_ci <tr> 2616023dd3b8Sopenharmony_ci <td><b> s </b></td> 2617023dd3b8Sopenharmony_ci <td><code>±1</code></td> 2618023dd3b8Sopenharmony_ci <td><code>NaN</code></td> 2619023dd3b8Sopenharmony_ci <td><code>±1</code></td> 2620023dd3b8Sopenharmony_ci </tr> 2621023dd3b8Sopenharmony_ci </table> 2622023dd3b8Sopenharmony_ci <pre> 2623023dd3b8Sopenharmony_cix = new Number(-0) // 0 2624023dd3b8Sopenharmony_ci1 / x == -Infinity // true 2625023dd3b8Sopenharmony_ci 2626023dd3b8Sopenharmony_ciy = new Decimal(-0) 2627023dd3b8Sopenharmony_ciy.d // '0' ( [0].toString() ) 2628023dd3b8Sopenharmony_ciy.e // 0 2629023dd3b8Sopenharmony_ciy.s // -1 2630023dd3b8Sopenharmony_ciy.toString() // '0' 2631023dd3b8Sopenharmony_ciy.valueOf() // '-0'</pre> 2632023dd3b8Sopenharmony_ci 2633023dd3b8Sopenharmony_ci 2634023dd3b8Sopenharmony_ci 2635023dd3b8Sopenharmony_ci <h4 id='Errors'>Errors</h4> 2636023dd3b8Sopenharmony_ci <p> 2637023dd3b8Sopenharmony_ci The errors that are thrown are generic <code>Error</code> objects whose <code>message</code> 2638023dd3b8Sopenharmony_ci property begins with <code>"[DecimalError]"</code>. 2639023dd3b8Sopenharmony_ci </p> 2640023dd3b8Sopenharmony_ci <p>To determine if an exception is a Decimal Error:</p> 2641023dd3b8Sopenharmony_ci <pre> 2642023dd3b8Sopenharmony_citry { 2643023dd3b8Sopenharmony_ci // ... 2644023dd3b8Sopenharmony_ci} catch (e) { 2645023dd3b8Sopenharmony_ci if ( e instanceof Error && /DecimalError/.test(e.message) ) { 2646023dd3b8Sopenharmony_ci // ... 2647023dd3b8Sopenharmony_ci } 2648023dd3b8Sopenharmony_ci}</pre> 2649023dd3b8Sopenharmony_ci 2650023dd3b8Sopenharmony_ci 2651023dd3b8Sopenharmony_ci 2652023dd3b8Sopenharmony_ci <h4 id='Pi'>Pi</h4> 2653023dd3b8Sopenharmony_ci <p> 2654023dd3b8Sopenharmony_ci The maximum precision of the trigonometric methods is dependent on the internal value of the 2655023dd3b8Sopenharmony_ci constant pi, which is defined as the string <code>PI</code> near the top of the source file. 2656023dd3b8Sopenharmony_ci </p> 2657023dd3b8Sopenharmony_ci <p> 2658023dd3b8Sopenharmony_ci It has a precision of <code>1025</code> digits, meaning that the trigonometric methods 2659023dd3b8Sopenharmony_ci can calculate up to just over <code>1000</code> digits, but the actual figure depends on the 2660023dd3b8Sopenharmony_ci precision of the argument passed to them. To calculate the actual figure use: 2661023dd3b8Sopenharmony_ci </p> 2662023dd3b8Sopenharmony_ci <p><b>maximum_result_precision = 1000 - argument_precision</b></p> 2663023dd3b8Sopenharmony_ci For example, the following both work fine: 2664023dd3b8Sopenharmony_ci <pre> 2665023dd3b8Sopenharmony_ciDecimal.set({precision: 991}).tan(123456789) 2666023dd3b8Sopenharmony_ciDecimal.set({precision: 9}).tan(991_digit_number)</pre> 2667023dd3b8Sopenharmony_ci <p> 2668023dd3b8Sopenharmony_ci as, for each, the result precision plus the argument precision, i.e. <code>991 + 9</code> and 2669023dd3b8Sopenharmony_ci <code>9 + 991</code>, is less than or equal to <code>1000</code>. 2670023dd3b8Sopenharmony_ci </p> 2671023dd3b8Sopenharmony_ci <p> 2672023dd3b8Sopenharmony_ci If greater precision is required then the value of <code>PI</code> will need to be extended to 2673023dd3b8Sopenharmony_ci about <code>25</code> digits more than the precision required. The time taken by the methods 2674023dd3b8Sopenharmony_ci will then be the limiting factor. 2675023dd3b8Sopenharmony_ci </p> 2676023dd3b8Sopenharmony_ci <p> 2677023dd3b8Sopenharmony_ci The value can also be shortened to reduce the size of the source file if such high precision 2678023dd3b8Sopenharmony_ci is not required. 2679023dd3b8Sopenharmony_ci </p> 2680023dd3b8Sopenharmony_ci <p>To get the value of pi:</p> 2681023dd3b8Sopenharmony_ci <pre> 2682023dd3b8Sopenharmony_cipi = Decimal.acos(-1)</pre> 2683023dd3b8Sopenharmony_ci 2684023dd3b8Sopenharmony_ci 2685023dd3b8Sopenharmony_ci 2686023dd3b8Sopenharmony_ci <h2 id='faq'>FAQ</h2> 2687023dd3b8Sopenharmony_ci <h6>Why are trailing fractional zeros removed from Decimals?</h6> 2688023dd3b8Sopenharmony_ci <p> 2689023dd3b8Sopenharmony_ci Some arbitrary-precision libraries retain trailing fractional zeros as they can indicate the 2690023dd3b8Sopenharmony_ci precision of a value. This can be useful but the results of arithmetic operations can be 2691023dd3b8Sopenharmony_ci misleading. 2692023dd3b8Sopenharmony_ci </p> 2693023dd3b8Sopenharmony_ci <pre> 2694023dd3b8Sopenharmony_cix = new BigDecimal("1.0") 2695023dd3b8Sopenharmony_ciy = new BigDecimal("1.1000") 2696023dd3b8Sopenharmony_ciz = x.add(y) // 2.1000 2697023dd3b8Sopenharmony_ci 2698023dd3b8Sopenharmony_cix = new BigDecimal("1.20") 2699023dd3b8Sopenharmony_ciy = new BigDecimal("3.45000") 2700023dd3b8Sopenharmony_ciz = x.multiply(y) // 4.1400000</pre> 2701023dd3b8Sopenharmony_ci <p> 2702023dd3b8Sopenharmony_ci To specify the precision of a value is to specify that the value lies 2703023dd3b8Sopenharmony_ci within a certain range. 2704023dd3b8Sopenharmony_ci </p> 2705023dd3b8Sopenharmony_ci <p> 2706023dd3b8Sopenharmony_ci In the first example, <code>x</code> has a value of <code>1.0</code>. The trailing zero shows 2707023dd3b8Sopenharmony_ci the precision of the value, implying that it is in the range <code>0.95</code> to 2708023dd3b8Sopenharmony_ci <code>1.05</code>. Similarly, the precision indicated by the trailing zeros of <code>y</code> 2709023dd3b8Sopenharmony_ci indicates that the value is in the range <code>1.09995</code> to <code>1.10005</code>. 2710023dd3b8Sopenharmony_ci </p> 2711023dd3b8Sopenharmony_ci <p> 2712023dd3b8Sopenharmony_ci If we add the two lowest values in the ranges we have, <code>0.95 + 1.09995 = 2.04995</code>, 2713023dd3b8Sopenharmony_ci and if we add the two highest values we have, <code>1.05 + 1.10005 = 2.15005</code>, so the 2714023dd3b8Sopenharmony_ci range of the result of the addition implied by the precision of its operands is 2715023dd3b8Sopenharmony_ci <code>2.04995</code> to <code>2.15005</code>. 2716023dd3b8Sopenharmony_ci </p> 2717023dd3b8Sopenharmony_ci <p> 2718023dd3b8Sopenharmony_ci The result given by BigDecimal of <code>2.1000</code> however, indicates that the value is in 2719023dd3b8Sopenharmony_ci the range <code>2.09995</code> to <code>2.10005</code> and therefore the precision implied by 2720023dd3b8Sopenharmony_ci its trailing zeros may be misleading. 2721023dd3b8Sopenharmony_ci </p> 2722023dd3b8Sopenharmony_ci <p> 2723023dd3b8Sopenharmony_ci In the second example, the true range is <code>4.122744</code> to <code>4.157256</code> yet 2724023dd3b8Sopenharmony_ci the BigDecimal answer of <code>4.1400000</code> indicates a range of <code>4.13999995</code> 2725023dd3b8Sopenharmony_ci to <code>4.14000005</code>. Again, the precision implied by the trailing zeros may be 2726023dd3b8Sopenharmony_ci misleading. 2727023dd3b8Sopenharmony_ci </p> 2728023dd3b8Sopenharmony_ci <p> 2729023dd3b8Sopenharmony_ci This library, like binary floating point and most calculators, does not retain trailing 2730023dd3b8Sopenharmony_ci fractional zeros. Instead, the <code>toExponential</code>, <code>toFixed</code> and 2731023dd3b8Sopenharmony_ci <code>toPrecision</code> methods enable trailing zeros to be added if and when required.<br /> 2732023dd3b8Sopenharmony_ci </p> 2733023dd3b8Sopenharmony_ci </div> 2734023dd3b8Sopenharmony_ci 2735023dd3b8Sopenharmony_ci</body> 2736023dd3b8Sopenharmony_ci</html> 2737