分数を比較|2つの分数の大小を正確に判定
2つの分数のどちらが大きいかを正確に判定します。3/4は2/3より大きく、1/2と2/4は同じ値なので等しいと判定されます。整数のたすき掛けで比べるため、丸めで結果が逆転することはありません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 分子 1
- 3
- 分母 1
- 4
- 分子 2
- 2
- 分母 2
- 3
- 比較
- 1
- 大きい方
- first
1つ目の分数が小さい場合は -1、等しい場合は 0、1つ目が大きい場合は 1 を返します。比較には浮動小数点の除算ではなく、正確な整数の交差乗算を用いるため、小数の丸めによって結果が静かに逆転してしまうような巨大な分子や分母でも、常に正しい答えが得られます。宿題のヘルパー、単位換算パイプライン、価格計算エンジンなどで必要になるこの種のチェックを、エッジケースで密かに壊れる自作の比較処理ではなく、1回の決定的な呼び出しで済ませられます。
比較が返すもの
送信するのは4つの整数です。1つ目の分数の分子と分母、そして2つ目の分数の分子と分母です。comparison が -1 の場合は1つ目の分数が小さいことを、0 の場合は2つの分数がまったく同じ値を表すことを、1 の場合は1つ目の分数が大きいことを意味します。
1/2 と 2/4 は同じ値なので、これらを比較すると 0 が返ります。等価性は数字の見た目ではなく、値についてのものだからです。判定結果とともに、各分数が小数値とともにエコーバックされます。
これは結果の表示に便利ですが、判定を決めるものではありません。判定自体は正確な算術演算で行われるため、表示される小数はあくまで利便性のためのものであり、仕組みそのものではありません。
正確な交差乗算が重要な理由
a/b と c/d を比較する単純な方法は、両方を割り算して小数を比較することです。しかし、数が大きくなって異なる2つの分数が同じ浮動小数点値に丸められたり、同じ分数が異なるマシンで異なる丸め方をされたりすると、この方法は破綻します。この機能は代わりに、交差積 a×d と c×b を正確な整数として比較します。
これは分数の比較と数学的に等価であり、除算を一切含まないため、どのような大きさでも丸め誤差が生じません。負の値は数学が示す通りに振る舞います。-1/2 は 1/3 より小さく、分母が負の場合は分数全体が負になるだけなので、1/-2 は -1/2 とまったく同じように比較されます。分子がゼロの場合も問題なく、値がゼロの他のどの分数とも等しいと比較されます。
完全に拒否される入力は、分母がゼロの場合(分母がゼロの分数は定義されないため)と、整数でない値(この契約は正確な整数の分数を対象としているため)だけです。
パイプラインでの位置づけ
分数のしきい値を正確に評価する必要があるあらゆる場面で利用されています。割引エンジンがクォータの 2/3 が消費されたかどうかを判断する場合、教育ツールが生徒の答えを正しい順序と照合する場合、分子と分母を別々の列に格納した比率を正規化するデータクリーニングの工程などです。
入力の桁数に関係なく、処理は定数時間の2回の乗算だけなので、小さなテスト値で立てた予算は本番データにも安全に外挿できます。そして判定結果は単純な -1、0、1 なので、追加の解析や単位換算なしに、どんなソートコールバック、アサーション、条件分岐にもそのまま組み込めます。
活用例
宿題の答えを確認する
生徒が並べた2つの分数の順序が正しいかを、3/9 と 1/3 のような等しい場合も含めて検証します。
分数のしきい値を評価する
分子と分母の列として保存された比率が基準となる分数を超えたかどうかを、浮動小数点のずれなく正確に判断します。
ソート前に比率を正規化する
正確な整数演算で比率をペアごとに比較し、ソート済みレポートで 5/8 と 62/100 が毎回正しく並ぶようにします。
よくある質問
料金はいくらですか?
また、このページ上でブラウザから無料で実行することもできます。
戻り値は何を意味しますか?
-1 は1つ目の分数が小さいこと、0 は2つの分数が等しいこと、1 は1つ目の分数が大きいことを意味します。
分子や分母は負の値でも使えますか?
はい。 負の値は数学的に正しい符号処理で比較されるため、1/-2 は -1/2 とまったく同じように比較されます。
非常に大きな数でも比較は正確ですか?
はい。 分数は小数への除算ではなく、正確な整数の交差乗算で比較されるため、どのような大きさでも丸め誤差はありません。
1/2 と 2/4 は等しいと判定されますか?
はい。 等価性は見た目の数字ではなく分数の値についてのものなので、等価な分数は 0 を返します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/comparing-fractions \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"numerator_1":3,"denominator_1":4,"numerator_2":2,"denominator_2":3}'const res = await fetch("https://api.kit.forhosting.com/math/comparing-fractions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"numerator_1": 3,
"denominator_1": 4,
"numerator_2": 2,
"denominator_2": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/comparing-fractions",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"numerator_1": 3,
"denominator_1": 4,
"numerator_2": 2,
"denominator_2": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/comparing-fractions", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"numerator_1":3,"denominator_1":4,"numerator_2":2,"denominator_2":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"numerator_1":3,"denominator_1":4,"numerator_2":2,"denominator_2":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/comparing-fractions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"numerator_1": 3,
"denominator_1": 4,
"numerator_2": 2,
"denominator_2": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.comparing_fractions",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
分数比較APIは、整数の分子と分母で指定された2つの分数を受け取り、どちらが大きいかをお知らせします。
比較が返すもの
エンドポイントは単一の数値 comparison に加えて、1つ目の分数、2つ目の分数、あるいはどちらでもない、どれが大きいかを示す人間が読みやすい larger フィールドを返します。
パイプラインでの位置づけ
この関数は決定的で副作用がなく、ブラウザとサーバーで同一のため、このページで無料でチェックを試作し、2つの環境で結果が食い違わないか心配することなく、まったく同じ比較をAPI経由で自動化できます。各呼び出しの料金は $0.002 で、大きな整数に対する追加料金はありません。
技術的な質問
分母がゼロの場合はどうなりますか?
分母がゼロの分数は定義されないため、リクエストは invalid_input エラーで拒否されます。