问题标签 [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 投票
1 回答
508 浏览

c++ - Boost.Units 频率到周期

我正在尝试使用 Boost.Units 库将频率(例如,20kHz)转换为其周期的持续时间(50000 纳秒)。我不想使用浮点数。

我遇到的麻烦是,简单地取倒数 1/f 会导致零截断,所以即使转换为纳秒后,结果也是 0ns。如果我先转换为兆赫然后取倒数,那么第一步再次导致零截断。

我发现的一种解决方法是使用 boost::rational 作为数量的 value_type。这行得通,但它让我觉得丑陋。有没有更好的解决方案?我对 Units 库还很陌生,到目前为止有点不知所措。

我现在的解决方案:

0 投票
3 回答
314 浏览

ruby - 有理数 - 红宝石中的原始数字

我如何获得原始数字?例如,当我输入:

2 和 10 将更改为 1 和 5:

如何从 Rational 类(r)的实例中获得 2 和 10?

我给 Rational 类打了猴子补丁并创建了新方法(Rational_o):

它可以工作,但是是否有存储原始 x 和 y 的内置方法或变量?

0 投票
3 回答
102 浏览

ruby - 为什么在使用 Ruby Rational 时会出现舍入错误?

我正在以编程方式计算给定音符的频率。

快速介绍:

  • 音符A4的频率为440Hz
  • 高一个八度的音符是低八度中相同音符的频率的两倍(所以A3是 220Hz,A2是 110Hz)
  • 一个音符与下一个半音之间的差异是对数 2 到 12 分之一。
  • C3 = B3 x 2 ^ (1/12)

用 Ruby 编写这个公式,我想出了以下内容:

我得到的结果并不完美。A 音符的四舍五入似乎比预期的要高一点:

请注意 A 频率 - 不是 880、1760,而是略高一些。

我认为 Ruby 的Rational应该提供准确的计算并避免使用浮点数造成的舍入错误。

谁能解释一下:

  1. 为什么这个结果不准确?
  2. 如何改进上述代码以获得真正准确的结果?
0 投票
2 回答
99 浏览

c - 自定义结构返回功能卡在输入上?

我想用结构创建一个函数来简化有理数,
一个成员是分子(int),另一个是分母(int),但程序卡在输入!我知道 scanf() 有点冒险,但我认为它只是几个整数!

0 投票
1 回答
1474 浏览

c++ - 从 boost cpp_rational 到 int 的转换错误

当分子和分母有很多数字时,boost cpp_rational 似乎将错误转换为 int。

输出是:

此外,尝试将 cpp_rational 转换为 cpp_int 无法编译,例如,使用

我想要发生的是划分和四舍五入,即使接近整数也永远不会出错。

帮助?谢谢。

0 投票
2 回答
1539 浏览

c++ - 计算双精度分子和分母的最准确方法

我已经实现class NaturalNum了代表自然数的“无限”大小(最大 4GB)。

我还实现class RationalNum了以无限精度表示有理数。它存储有理数的分子和分母,两者都是NaturalNum实例,并在执行用户发出的任何算术运算时依赖它们。

精度“下降一定程度”的唯一地方是在打印时,因为小数点(或非小数点)后出现的位数有限制(由用户提供)。

我的问题涉及class RationalNum. 即,构造函数接受一个double值,并计算相应的分子和分母。

我的代码在下面给出,我想知道是否有人看到更准确的计算方法:

注意:以“m_”开头的变量是成员变量。

谢谢

0 投票
2 回答
60 浏览

java - 如何使方法返回双精度

我有以下代码,getNom 和 getdenom 都是整数,例如 2 和 5。为什么我在这里得到 0.0 而不是 0.4 的输出?谢谢你。

0 投票
3 回答
1493 浏览

java - 如何创建分数列表?

我需要一种将分数放入ArrayList. 但是,我遇到了问题,因为我不确定如何以以后可以比较它们以便对它们进行排序的方式做到这一点。

注意:我将使用 4 个或更多分数,我不太确定如何(如果可能的话)使用可比较的类来做超过 2 个。

例如:我需要输入 1/1 , 3/4 , 7/4 , 2/8

然后我需要从最小到最大对它们进行排序(使用列表)。

任何帮助表示赞赏。

0 投票
1 回答
80 浏览

java - 浮点错误

我在使用浮点数时遇到问题。一个双。例如,Java 中的 56 实际上可能存储为 .56000...1。

我正在尝试将小数转换为分数。我尝试使用连分数来做到这一点

连续分数

但是由于如何计算机存储和四舍五入的小数,我使用该方法的答案是不准确的。

我尝试了另一种方法:

我正在使用字符串来查找小数的长度,以确定我应该乘以 10 的次数。后来我截断了小数。这让我得到了正确的答案,但感觉不是正确的方法?有人可以建议这样做的“正确”方法吗?

0 投票
2 回答
280 浏览

serialization - How to serialize boost::rational

I cannot serialize boost::rational<int>. I searched for a boost/serialize/rational.h header but it does not exist.

Is there a way to achieve it?