菜鸟教程小白 发表于 2022-12-12 14:00:52

iOS:计算长数除法的余数


                                            <p><p>我有一个 NSString *,例如以下数字 @"182316110006010135232100",我需要用这个完整的值进行计算。我在 iOS SDK 上尝试了多种类型的数字系统,例如 Int、Float 等。但由于位数的原因,当我将 StringValue 更改为 IntValue 时,它​​会更改数字。
我需要用这个完整的值做以下总和:mod(digit, 97);</p>

<p>据我所知,我已经检查过 Objective-C Long Long 中最长的数字类型:</p>

<pre><code>long long digit = [(NSString *)shouldBechecksum longLongValue];
</code></pre>

<p>并且需要做如下计算:</p>

<pre><code>mod(digit, 97);
</code></pre>

<p>现在我得到奇怪的结果,因为它用最大版本的数字求和。我需要它来做这个总和:</p>

<pre><code>mod(182316110006010135232100, 97);
</code></pre>

<p>我怎样才能正确地进行这个计算?</p>

<p>谢谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以使用 NSDecimalNumber 类来获得高达 38 位的精度。要获取 mod,只需将此公式与文档中解释的相应 NSDecimalNumber 方法一起使用。</p>

<pre><code>Mod = digit - int(digit/97)
</code></pre>

<p>这是因为 NSDecimalNumber 只能做基本的操作,你必须像我们在学校一样获得 mod。</p>

<p>来自 Apple 文档:</p>

<p>NSDecimalNumber 是 NSNumber 的不可变子类,它提供了一个面向对象的包装器,用于进行 base-10 算术运算。一个实例可以表示任何可以表示为尾数 x 10^exponent 的数字,其中尾数是最多 38 位长度的十进制整数,指数是从 –128 到 127 的整数。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS:计算长数除法的余数,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18558650/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18558650/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS:计算长数除法的余数