OGeek|极客世界-中国程序员成长平台

标题: iOS:计算长数除法的余数 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 14:00
标题: iOS:计算长数除法的余数

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

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

long long digit = [(NSString *)shouldBechecksum longLongValue]; 

并且需要做如下计算:

mod(digit, 97);

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

mod(182316110006010135232100, 97);

我怎样才能正确地进行这个计算?

谢谢!



Best Answer-推荐答案


您可以使用 NSDecimalNumber 类来获得高达 38 位的精度。要获取 mod,只需将此公式与文档中解释的相应 NSDecimalNumber 方法一起使用。

Mod = digit - int(digit/97)

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

来自 Apple 文档:

NSDecimalNumber 是 NSNumber 的不可变子类,它提供了一个面向对象的包装器,用于进行 base-10 算术运算。一个实例可以表示任何可以表示为尾数 x 10^exponent 的数字,其中尾数是最多 38 位长度的十进制整数,指数是从 –128 到 127 的整数。

关于iOS:计算长数除法的余数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558650/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4