使用整数比较间隔

时间:2012-06-28 04:12:53

标签: c math integer rational-number fractions

首先,我知道有许多不同的更容易/可靠的方式来执行我要提出的问题,但这不是我的问题。

我试图比较两组整数,好像它们是分数。我的意思是假设我有一个二维数组:

int array[2][2];

array[0][0] = 2;
array[0][1] = 3;
array[1][0] = 1;
array[1][1] = 50;

我想如何处理这些数字的是:

中的数字

array [0] [0] = 2< ---是分子

array [0] [1] = 3< ---是分母

或者在这种情况下仅为2/3。我想要做的就是比较两个分数;

if(2/3 < 1/50){
  //blah blah blah code here
}

这里需要注意的是,我无法将数字转换为浮点数以保持其准确性或创建临时浮点占位符。有没有办法比较这些只使用整数值?

我也不确切地知道我应该为这个问题添加什么标签,如果你想到某些东西让我知道,我会标记它。

3 个答案:

答案 0 :(得分:5)

将两个分子交叉乘以另一个分母

IE

2/3 vs 1/50th:将50和1乘以3并将2和3乘以50。

然后你可以比较分子而不必转换成浮点数。

答案 1 :(得分:1)

if(array[0][0]*array[1][1])<array[0][1]*array[1][0])
{
    // your code here

}

答案 2 :(得分:0)

最直接的方法是找到最小公倍数,然后转换分子。之后你可以将分子比作整数。

即。 2 * 50 = 100; 1 * 3 = 3; ==&GT; 100&gt; 3