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'>&nbsp;</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 &amp; 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>&rArr; 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>&plusmn;0</code>, or
260023dd3b8Sopenharmony_ci        is <code>&plusmn;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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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&lt;script&gt; Decimal = 1 &lt;/script&gt;
676023dd3b8Sopenharmony_ci&lt;script src='/path/to/decimal.js'&gt;&lt;/script&gt;
677023dd3b8Sopenharmony_ci&lt;script&gt;
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&lt;/script&gt;</pre>
683023dd3b8Sopenharmony_ci
684023dd3b8Sopenharmony_ci
685023dd3b8Sopenharmony_ci
686023dd3b8Sopenharmony_ci    <h5 id="Dpow">pow<code class='inset'>.pow(base, exponent) <i>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&nbsp;</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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&plusmn;0</code>, <code>&plusmn;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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&nbsp;</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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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 &gt; (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>&rArr; 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) &gt;= 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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) &lt; 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>&rArr; 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 &lt;= (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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; [Decimal, Decimal]</i></code>
2210023dd3b8Sopenharmony_ci    </h5>
2211023dd3b8Sopenharmony_ci    <p>
2212023dd3b8Sopenharmony_ci      <code>max_denominator</code>: <i>number|string|Decimal</i>: <code>1</code> &gt;= integer &lt;
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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&rArr; 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>&plusmn;0</code>, <code>NaN</code> and
2594023dd3b8Sopenharmony_ci      <code>&plusmn;Infinity</code> are stored.
2595023dd3b8Sopenharmony_ci    </p>
2596023dd3b8Sopenharmony_ci       <table>
2597023dd3b8Sopenharmony_ci      <tr>
2598023dd3b8Sopenharmony_ci        <th> </th>
2599023dd3b8Sopenharmony_ci        <th>&plusmn;0</th>
2600023dd3b8Sopenharmony_ci        <th>NaN</th>
2601023dd3b8Sopenharmony_ci        <th>&plusmn;Infinity</th>
2602023dd3b8Sopenharmony_ci      </tr>
2603023dd3b8Sopenharmony_ci      <tr>
2604023dd3b8Sopenharmony_ci        <td><b>&nbsp;d&nbsp;</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>&nbsp;e&nbsp;</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>&nbsp;s&nbsp;</b></td>
2617023dd3b8Sopenharmony_ci        <td><code>&plusmn;1</code></td>
2618023dd3b8Sopenharmony_ci        <td><code>NaN</code></td>
2619023dd3b8Sopenharmony_ci        <td><code>&plusmn;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