⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigint.html

📁 perl教程
💻 HTML
📖 第 1 页 / 共 5 页
字号:
Math::BigInt.</p>
<p>
</p>
<h2><a name="precision">precision</a></h2>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(-</span><span class="number">2</span><span class="operator">);</span>      <span class="comment"># local for $x, round at the second digit right of the dot</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(</span><span class="number">2</span><span class="operator">);</span>       <span class="comment"># ditto, round at the second digit left of the dot</span>
</pre>
<pre>
        <span class="variable">CLASS</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(</span><span class="number">5</span><span class="operator">);</span>    <span class="comment"># Global for all members of CLASS</span>
                                <span class="comment"># This also applies to new()!</span>
        <span class="variable">CLASS</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(-</span><span class="number">5</span><span class="operator">);</span>   <span class="comment"># ditto</span>
</pre>
<pre>
        <span class="variable">$P</span> <span class="operator">=</span> <span class="variable">CLASS</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">();</span>        <span class="comment"># read out global precision </span>
        <span class="variable">$P</span> <span class="operator">=</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">();</span>           <span class="comment"># read out precision that affects $x</span>
</pre>
<p>Note: You probably want to use <em>accuracy()</em> instead. With <a href="#accuracy">the accuracy manpage</a> you
set the number of digits each result should have, with <a href="#precision">the precision manpage</a> you
set the place where to round!</p>
<p><code>precision()</code> sets or gets the global or local precision, aka at which digit
before or after the dot to round all results. A set global precision also
applies to all newly created numbers!</p>
<p>In Math::BigInt, passing a negative number precision has no effect since no
numbers have digits after the dot. In <a href="../../lib/Math/BigFloat.html">the Math::BigFloat manpage</a>, it will round all
results to P digits after the dot.</p>
<p>Please see the section about <a href="#accuracy_and_precision">ACCURACY AND PRECISION</a> for further details.</p>
<p>Pass an undef value to disable it:</p>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(</span><span class="keyword">undef</span><span class="operator">);</span>
        <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(</span><span class="keyword">undef</span><span class="operator">);</span>
</pre>
<p>Returns the current precision. For <code>$x-</code>precision()&gt; it will return either the
local precision of $x, or if not defined, the global. This means the return
value represents the prevision that will be in effect for $x:</p>
<pre>
        <span class="variable">$y</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">1234567</span><span class="operator">);</span>        <span class="comment"># unrounded</span>
        <span class="keyword">print</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">precision</span><span class="operator">(</span><span class="number">4</span><span class="operator">),</span><span class="string">"\n"</span><span class="operator">;</span>  <span class="comment"># set 4, print 4</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">123456</span><span class="operator">);</span>         <span class="comment"># will be automatically rounded</span>
        <span class="keyword">print</span> <span class="variable">$x</span><span class="operator">;</span>                               <span class="comment"># print "120000"!</span>
</pre>
<p>Note: Works also for subclasses like <a href="../../lib/Math/BigFloat.html">the Math::BigFloat manpage</a>. Each class has its
own globals separated from Math::BigInt, but it is possible to subclass
Math::BigInt and make the globals of the subclass aliases to the ones from
Math::BigInt.</p>
<p>
</p>
<h2><a name="brsft">brsft</a></h2>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">brsft</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">,</span><span class="variable">$n</span><span class="operator">);</span>
</pre>
<p>Shifts $x right by $y in base $n. Default is base 2, used are usually 10 and
2, but others work, too.</p>
<p>Right shifting usually amounts to dividing $x by $n ** $y and truncating the
result:</p>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">10</span><span class="operator">);</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">brsft</span><span class="operator">(</span><span class="number">1</span><span class="operator">);</span>                   <span class="comment"># same as $x &gt;&gt; 1: 5</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">1234</span><span class="operator">);</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">brsft</span><span class="operator">(</span><span class="number">2</span><span class="operator">,</span><span class="number">10</span><span class="operator">);</span>                <span class="comment"># result 12</span>
</pre>
<p>There is one exception, and that is base 2 with negative $x:</p>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(-</span><span class="number">5</span><span class="operator">);</span>
        <span class="keyword">print</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">brsft</span><span class="operator">(</span><span class="number">1</span><span class="operator">);</span>
</pre>
<p>This will print -3, not -2 (as it would if you divide -5 by 2 and truncate the
result).</p>
<p>
</p>
<h2><a name="new">new</a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="variable">$str</span><span class="operator">,</span><span class="variable">$A</span><span class="operator">,</span><span class="variable">$P</span><span class="operator">,</span><span class="variable">$R</span><span class="operator">);</span>
</pre>
<p>Creates a new BigInt object from a scalar or another BigInt object. The
input is accepted as decimal, hex (with leading '0x') or binary (with leading
'0b').</p>
<p>See <a href="#item_input">Input</a> for more info on accepted input formats.</p>
<p>
</p>
<h2><a name="bnan">bnan</a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">bnan</span><span class="operator">();</span>
</pre>
<p>Creates a new BigInt object representing NaN (Not A Number).
If used on an object, it will set it to NaN:</p>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">bnan</span><span class="operator">();</span>
</pre>
<p>
</p>
<h2><a name="bzero">bzero</a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">bzero</span><span class="operator">();</span>
</pre>
<p>Creates a new BigInt object representing zero.
If used on an object, it will set it to zero:</p>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">bzero</span><span class="operator">();</span>
</pre>
<p>
</p>
<h2><a name="binf">binf</a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">binf</span><span class="operator">(</span><span class="variable">$sign</span><span class="operator">);</span>
</pre>
<p>Creates a new BigInt object representing infinity. The optional argument is
either '-' or '+', indicating whether you want infinity or minus infinity.
If used on an object, it will set it to infinity:</p>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">binf</span><span class="operator">();</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">binf</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span>
</pre>
<p>
</p>
<h2><a name="bone">bone</a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">binf</span><span class="operator">(</span><span class="variable">$sign</span><span class="operator">);</span>
</pre>
<p>Creates a new BigInt object representing one. The optional argument is
either '-' or '+', indicating whether you want one or minus one.
If used on an object, it will set it to one:</p>
<pre>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">bone</span><span class="operator">();</span>             <span class="comment"># +1</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">bone</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span>          <span class="comment"># -1</span>
</pre>
<p>
</p>
<h2><a name="is_one___is_zero___is_nan___is_inf__"><code>is_one()/is_zero()/is_nan()/is_inf()</code></a></h2>
<pre>
  
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_zero</span><span class="operator">();</span>                  <span class="comment"># true if arg is +0</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_nan</span><span class="operator">();</span>                   <span class="comment"># true if arg is NaN</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_one</span><span class="operator">();</span>                   <span class="comment"># true if arg is +1</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_one</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span>                <span class="comment"># true if arg is -1</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_inf</span><span class="operator">();</span>                   <span class="comment"># true if +inf</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_inf</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span>                <span class="comment"># true if -inf (sign is default '+')</span>
</pre>
<p>These methods all test the BigInt for beeing one specific value and return
true or false depending on the input. These are faster than doing something
like:</p>
<pre>
        if ($x == 0)</pre>
<p>
</p>
<h2><a name="is_pos___is_neg__"><code>is_pos()/is_neg()</code></a></h2>
<pre>

        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_pos</span><span class="operator">();</span>                   <span class="comment"># true if &gt; 0</span>
        <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">is_neg</span><span class="operator">();</span>                   <span class="comment"># true if &lt; 0</span>
</pre>
<p>The methods return true if the argument is positive or negative, respectively.
<code>NaN</code> is neither positive nor negative, while <code>+inf</code> counts as positive, and
<code>-inf</code> is negative. A <code>zero</code> is neither positive nor negative.</p>
<p>These methods are only testing the sign, and not the value.</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -