问题标签 [rational-number]

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 回答
1871 浏览

math - 处理具有非整数指数的负底的幂函数

Math.pow(), pow(), 不管叫什么,很多语言(和计算器)都有一些内置函数来计算浮点数(或双精度数)的 x=a^b。有 a 为负数且 b 不是整数的特殊情况。有些会返回NaN,有些会给出复杂的结果(咳咳 Python)。但有些实际上能够给出真正的结果,所以我想知道的是如何。为了解释我的困惑:

假设 b 是有理数:b=c/d。现在我们看一下 c 和 d 的奇偶校验:

  • d 是偶数:没有实数 x -> NaN 或错误

  • d 是奇数,c 是偶数:正 x

  • d 是奇数,c 是奇数:负 x

浮点数以特定格式存储,这意味着如果按字面解释,它始终是偶数 d(实际上是 2 的幂)。没有办法知道 c 和 d 的真实奇偶性,因为该信息在计算中丢失了。它只需要猜测。

所以我猜测它在做什么——它试图找到一个接近 b 的理性 c/d,奇数 d 并且 c 和 d 都小于某个阈值 t。较小的 t 意味着它可以更确定它是正确的,但它会在更少的数字上起作用。如果成功,它使用 c 的奇偶校验。否则它假装 d 是偶数。毕竟,浮点数可以是任何东西,数学库不想通过假设它可能不是合理的而给出可能错误的结果。

这只是我的猜测。如果有人真正看到了这些幂函数之一的代码(或规范,那也很好)并且可以提供洞察力,那就太好了。

0 投票
0 回答
138 浏览

c++ - 有理赋值运算符

所以在这个项目中,我必须创建一个合理化程序,帮助将数字简化为简化格式。我最挣扎的程序部分是具有长参数的运算符。我正在尝试写出适当的条件,以便 LongRational 将正确存储到 this->_num , this->_den 但逻辑我写的好像不太对。我的函数参数本身是否有问题,或者无论如何要纠正这个问题。

//注意:他希望有一组两个赋值运算符,它们带有参数,将 Rational 对象作为参数,另一个带有 long。

0 投票
2 回答
1284 浏览

java - 关于java编程中的有理数,计算(1/2+3/4+...+99/100)^2

这段代码的目的是计算 (1/2+3/4+...+99/100)^2。但是我的循环无法正确执行。r1 的结果是 3/4 而不是 99/100,我的代码有什么问题?我认为我的循环可以运行,因为我可以正确地得到它。那么如何更正我的代码并使其能够计算 (1/2+3/4+...+99/100)^2 ?谢谢你的回答。

这是 testRational 类 import java.math.BigInteger;

这段代码的目的是计算 (1/2+3/4+...+99/100)^2。但是我的循环无法正确执行。r1 的结果是 3/4 而不是 99/100,我的代码有什么问题?我认为我的循环可以运行,因为我可以正确地得到它。那么如何更正我的代码并使其能够计算 (1/2+3/4+...+99/100)^2 ?谢谢你的回答。这段代码的目的是计算 (1/2+3/4+...+99/100)^2。但是我的循环无法正确执行。r1 的结果是 3/4 而不是 99/100,我的代码有什么问题?我认为我的循环可以运行,因为我可以正确地得到它。那么如何更正我的代码并使其能够计算 (1/2+3/4+...+99/100)^2 ?谢谢你的回答。

0 投票
1 回答
249 浏览

c++ - 用四舍五入提升rational_cast?

我怎样才能做一个rational_cast<int64_t>四舍五入?

目前我正在做这样的黑客攻击:

但我希望能够在不涉及浮点的情况下“正确”地做到这一点。

0 投票
1 回答
136 浏览

java - ADT 合理实现的java语法帮助[错误:找不到符号]

所以我试图在java中为有理数构建这个ADT,但由于某种原因,我不断收到这个错误,说在尝试编译时找不到符号。我做错了什么?这个错误是因为我的语法吗?

// ****************** 构造函数 ***************************** *****

//********************* GETTERS *************************** **********

// ******************* 操作 *************************** ******

//********************* 工具 ************************** ************

//************************ 测试单元 *************************** *********

0 投票
1 回答
794 浏览

c++ - 将理性演员提高一倍

使用针对 boost 1.62 编译的以下代码:

我得到以下输出:

我希望rational_cast 输出 249999.5 谁能解释我做错了什么?

0 投票
0 回答
148 浏览

rust - 将 Rational64 舍入到分数的下一个倍数而不会溢出?

我使用 num-rational crate 的Rational64类型将数字表示为有符号 64 位整数的比率。我试图将一个数字向下舍入为另一个数字的下一个倍数,当我以两种明显的方式中的任何一种进行操作时,我遇到了整数溢出问题。请注意,这两个数字都可能是分数。

归一化为整数

操场

减去余数

操场

有没有办法让它n向下舍入到increment整数溢出的可能性较小的倍数?如果我必须提取分子和分母(两种 Rusti64类型)并直接对它们进行数学运算,那很好。

0 投票
2 回答
227 浏览

c++ - 将十进制数转换为其有理数时的精度问题

我有将双精度(比如N)转换为 p/q 形式(有理形式)的问题,为此我有以下策略:

  1. 将 N 乘以一个大数,例如 $k = 10^{10}$
  2. 然后p = y*kq = k
  3. 拿来gcd(p,q)找找p = p/gcd(p,q)_q = p/gcd(p,q)

N = 8.2,如果我们用纸笔解决,答案是正确的,但如(double)中8.2表示的那样,它会导致其有理形式转换出现问题。8.19999999N

我尝试过其他方式:(我使用了一个大号 10^k 而不是 100)

if(abs(y*100 - round(y*100)) < 0.000001) y = round(y*100)/100

但是这种方法也不能一直给出正确的表示。

有什么办法可以进行从 double 到 p/q 的等效转换?

0 投票
1 回答
186 浏览

java - 数字类 doubleValue 的异常

当我运行我的 main 方法时,我得到以下异常:线程“main”java.lang.StackOverflowError 中的异常,然后是:在 Rational.doubleValue(Rational.java:62) 中出现了 100 多次。这是为我提供主要课程的作业,因此我无法更改其中的任何内容。这是我的代码:



这是主类(我无法修改)


0 投票
1 回答
326 浏览

python - 将整数数组转换为它们比率的 SymPy 矩阵

我想将整数的 3D 数组更改SymPy为有理数矩阵。我知道我应该使用Sympy(RationalMatrix) 但我不知道该怎么做。

例如,

应该成为

它应该看起来如何的图片:

想要的结果图片