• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS:计算长数除法的余数

[复制链接]
菜鸟教程小白 发表于 2022-12-12 14:00:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap