问题标签 [rational-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
455 浏览

c++ - 将整数乘以有理数而没有中间溢出

我有一个表示非负有理数 p/q 的结构:

我想将我的有理数乘以 uint64n并得到一个整数结果,四舍五入。也就是说,我想计算:

同时避免n * r.p. (当然最终结果可能会溢出,这是可以接受的。)

我怎样才能做到这一点?有没有办法在没有高倍数的情况下做到这一点?

(我查看了 boost::rational 但它似乎没有提供此功能。)

0 投票
2 回答
1713 浏览

haskell - Haskell 中 Rationals 的模式匹配

以下函数非常简单:

确实,test 0 == 0test 1 == 1, 和test 77 == 2

以下函数几乎同样简单:

在 GHCi 中加载此代码会出错Parse error in pattern: 1 % 2

是什么赋予了?为什么我不能对有理数进行模式匹配?我可以用警卫解决这个例子的现实问题,但我很好奇为什么模式匹配不起作用。

0 投票
1 回答
2980 浏览

python - Python中的分数和整数相乘

我正在尝试构建一个有理数类,该类将在不使用fractions模块的情况下根据输入值执行各种算术函数。当我使用两个不同的分数时,代码可以正常工作,但是一旦我尝试使用整数,我就会在早期的类函数中遇到错误并且不确定原因。在这一点上我试图实现的是,再次将一个整数添加到一个有理数(例如,print Rational(1,2) * 3)。

我已经在下面包含了到目前为止的代码 - 有问题的操作是__radd__,尽管当它包含在我的代码中时,我收到一个属性错误__add__(在包含这个新操作之前,这个错误不会出现)。我猜问题出在第二个__radd__参数仍然是其他参数(假设 Rational 类的情况不同?),但我不确定如何继续。

编辑:我正在使用 Python 2.7。示例运行的错误包含在代码下方。

样本错误

0 投票
3 回答
318 浏览

biginteger - 有效检测有理数是否相等

我有许多有理数的集合,每个有理数的分子和分母都存储为一个大(数百或数千位)无符号整数。我希望能够有效地测试a/b集合中的任何给定有理数是否等于集合中的任何其他有理数c/d

最直接的方法是测试是否a*d == b*c,当然,但我想要比计算完整产品更有效的方法。

关于我的特定用例的一些说明:

  • 我将要测试的对很有可能实际上是相等的(因为我已经预先计算并首先通过它们的浮点近似值比较它们),所以如果它们不相等,那么早出线不会为我节省太多时间。
  • 我可以为每个数字预先计算额外的数据,但每个数字只会用于少数比较,因此昂贵的预先计算(例如素数分解)可能不值得。
  • 偶尔的假阴性会很好,但假阳性则不然。

我认为这在理论上可能是不可能的,但为了以防万一,把它扔给蜂巢头脑。

0 投票
1 回答
739 浏览

c++ - 加快双倍到有理数的转换

我写了一个相对简单的代码来将双精度数转换为有理数。该代码有效,并且保证找到给定双精度数的最小有理数;但是,它比一月份的糖蜜要慢。我花了一天时间尝试各种方法来改进它,但无济于事。关于如何加快速度的任何想法?实际的算法在 while 循环中,它只有 8 行。

}

0 投票
1 回答
95 浏览

java - 选择总和最大的有理数

我有 n 个有理数。其中我必须选择 m 个数字,这样

例如,如果我有 3 个数字 1/1、1/2、2/4,我必须选择 2 个数字。然后组合将是

假设我有指定分子的 n 个整数数组,以及其他 n 个分母整数数组。和数字 m。会有什么策略?

输入中的数字不需要减少有理数。例如,一个数字可以是 4/6,不一定是 2/3。

编辑: 蛮力解决方案将通过从 n 中选择 m 个数字来尝试所有排列。然后应用上面的公式来找到结果,然后看看哪个组合给出了最大的结果。

所以我想知道是否有任何数学公式或属性或比蛮力方式更聪明的方式。

0 投票
2 回答
220 浏览

lua - 尝试打印除法时,它将分数转换为小数

我正在编写一个计算器,我试图打印除法方程的答案,但它却将分数转换为小数。我正在运行 Lua 5.2.4

0 投票
1 回答
198 浏览

idris - 在 Idris 中实现有理数

Idris 中是否有任何现有的有理数实现?

例如Data.Ratio来自 Haskell 的端口。

0 投票
1 回答
550 浏览

racket - 为什么 Racket 报告说 π 是有理数?

正如任何中学数学学生都可以证明的那样,pi 是非理性的。

但是:

这是因为pi 在底层机器的浮点格式中的表示精度有限,因此总是可以表示为一些 p/q,其中 q 是 10^n,n 是表示精度

如果是这样,Racket(或其他类似行为的方案)抛出的任何数字怎么可能被认为是理性的呢?因此,为什么要打扰这个rational?功能呢?

更新:甚至(rational? (sqrt 3))报告#t

0 投票
0 回答
59 浏览

java - 如何实现“1 - 1/3 - 1/3 - 1/3 = 0”?

我希望能够以数学上正确的方式从我的变量中减去 1/3,这意味着:如果 1D 减去 1/3 三次,它应该是 0D。

但是,我不断得到一些微小的价值(1.1102230246251565E-16)

我已经尝试在每次减法后对其进行舍入(Math.round(input*1000000.0)/1000000.0),但是在第二次减法后我最终得到 0.333334,在第三次减法后得到 1.0E-6。为什么?