首先,我知道有许多不同的更简单/可靠的方法来执行我将要问的问题,但这不是我问题的重点。
我试图比较两组整数,就好像它们是分数一样。 我的意思是假设我有一个 2d 数组:
int array[2][2];
array[0][0] = 2;
array[0][1] = 3;
array[1][0] = 1;
array[1][1] = 50;
我想如何处理这些数字是:
数组[0][0] = 2 <---是分子
数组[0][1] = 3 <---是分母
或者在这种情况下只有 2/3。 我想做的是比较两个分数;
if(2/3 < 1/50){
//blah blah blah code here
}
这里需要注意的是,我不能将数字转换为浮点数以保持其准确性或创建临时浮点占位符。 有没有办法仅使用整数值来比较这些值?
我也不知道我应该为这个问题标记什么,如果你想到什么让我知道,我会标记它。
将两个分子相乘以彼此的分母
IE
2/3 vs 1/50:将 50 和 1 乘以 3,然后将 2 和 3 乘以 50。
然后,您可以比较分子而无需转换为浮点数。
if(array[0][0]*array[1][1])<array[0][1]*array[1][0])
{
// your code here
}
最直接的方法是找到最不常见的倍数,然后转换分子。之后,您可以将分子作为整数进行比较。
即 2*50 = 100; 1 * 3 = 3; ==> 100> 3