2

首先,我知道有许多不同的更简单/可靠的方法来执行我要问的问题,但这不是我问题的重点。

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

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
}

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

我也不确切知道我应该为这个问题标记什么,如果你想到什么让我知道,我会标记它。

4

3 回答 3

5

将两个分子乘以彼此的分母

IE

2/3 vs 1/50:将 50 和 1 乘以 3,然后将 2 和 3 乘以 50。

然后您可以比较分子而无需转换为浮点数。

于 2012-06-28T04:16:26.687 回答
1
if(array[0][0]*array[1][1])<array[0][1]*array[1][0])
{
    // your code here

}
于 2012-06-28T04:19:05.550 回答
0

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

即2*50 = 100;1 * 3 = 3;==> 100 > 3

于 2012-06-28T04:20:46.960 回答