首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有fractions.Fraction类的模

具有fractions.Fraction类的模
EN

Stack Overflow用户
提问于 2018-12-01 17:21:59
回答 1查看 465关注 0票数 1

我的目标是为包含非常大整数的numpy数组寻找np.mod(np.array[int], some_number)。Some_number是理性的,但通常不是一个精确的十进制小数。我想确保模块尽可能准确,因为我需要在后面的步骤中将结果保存为直方图,所以浮点精度引起的任何错误都可能意味着值最终会被放到错误的bin中。

我知道浮点的模块化功能受到浮点精度的限制,所以我对使用np.mod(array[int], float)犹豫不决。然后,我看到python库的分数模块。有人能给出建议吗?通过np.mod(np.array[int], Fraction(int1, int2))获得的结果是否比使用浮点数更准确?如果没有,解决这一问题的最佳办法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 11:40:43

所以你有一个分数some_number=n/d

计算模块就像执行这个分支一样:

代码语言:javascript
复制
a = q*(n/d) + (r/d)

余数是分子r的一个分数。它可以写成这样:

代码语言:javascript
复制
a*d = q * n + r

您遇到的问题是a*d可能溢出。但问题可以写成这样:

代码语言:javascript
复制
a = q1 * n + r1
d = q2 * n + r2

a*d = (q1*q2*n+q1*r2+q2*r1) * n + (r1*r2)

在n/d介于10 ~ 100,n>d,q2=0,r2=d的情况下,算法为

  1. 计算模n => r1
  2. 计算(r1*d)模n => r
  3. 将r除以d => a模n/d

如果是放进垃圾箱,你不需要第三步。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53573266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档