2

まず、これから質問することを実行するためのより簡単で信頼性の高い方法がたくさんあることは知っていますが、それは私の質問のポイントではありません。

2 つの整数セットを分数であるかのように比較しようとしています。これが意味することは、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 です。私がやりたいことは、2 つの分数を比較することです。

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

ここでの注意点は、数値を浮動小数点数に変換して精度を維持したり、一時的な浮動小数点プレースホルダーを作成したりすることはできないということです。整数値のみを使用してこれらを比較する方法はありますか?

また、この質問に何をタグ付けすればよいか正確にはわかりません。何か思いついたら教えてください。タグ付けします。

4

3 に答える 3

5

2 つの分子に互いの分母を掛け合わせる

IE

2/3 対 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 に答える