分数の足し算・引き算
3/4 + 2/5 は 23/20、帯分数では1と3/20です。足し算か引き算を選んで2つの分数を入力すると、約分済みの正確な答えが出ます。答えが負になるときは、符号は必ず分子に付きます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 演算
- 税を加算
- 1つ目の分子
- 1
- 分母 A
- 2
- 分子 B
- 1
- 分母 B
- 3
- 分子
- 5
- 分母
- 6
- 符号
- 1
- 読みやすい形式
- 5/6
既約分数に加えて、符号、整数でない場合の帯分数表現、小数表示も得られるため、宿題の確認、レシピの分量調整、計量計算、浮動小数点数ではなく比率で扱うパイプラインにそのまま利用できます。分母がゼロの場合は、計算を行う前に明確なエラーで拒否されます。
分数が小数に勝る理由
小数計算は便利ですが、精度が重要になる場面では限界があります。3分の1は0.333333ではなく、正確には1/3であり、丸めた瞬間に以降のすべての演算で拡大していく誤差を持ち込んでしまいます。分数の加算・減算で直接扱えば、最初から最後まで値が正確に保たれます。
共通分母は整数演算で求められ、分子どうしが結合され、小数の近似値は要求された場合のみ最後に生成されます。この順序は教育の現場で重要です。1/2 + 1/3と5/6を比較する学生には正確な答えが必要だからです。
また、工学や料理でも同様に重要です。数量が整数の比として与えられる場面で、加算のためだけに浮動小数点数へ変換すると、無料で得られた情報を捨てることになります。4つの整数と演算を送信すると、正確な和または差が約分されて返され、符号は分子に正規化されるため、下流のコードがマイナス記号の位置を推測する必要はありません。
約分の仕組み
すべての結果は同じ約分パイプラインを通過します。まず共通分母の上で演算が適用されます。A = a/b、B = c/dの場合、加算は(a·d + c·b) / (b·d)、減算は(a·d − c·b) / (b·d)となります。
次に、結果の分子と分母の最大公約数がユークリッドの互除法で計算され、両方がそれで割られるため、分数は必ず既約の形になります。4/8は必ず1/2として返り、4/8のままにはなりません。分母が符号を持つ場合は分子へ移されるため、−1/2は常に分子−1、分母2として報告されます。
活用例
宿題をステップごとに確認
3/4 + 2/5が本当に23/20であることを検証し、最終的な記述答案用に帯分数1 3/20も確認できます。
丸めずにレシピを分量調整
分数のカップ計量を正確に合算できます。2/3カップと1/4カップの合計は、丸めた小数の推測ではなく11/12カップです。
比率パイプラインを検証
工学や金融の比率を加算・減算のすべてで正確に保ち、小数への変換は表示時のみ行います。
よくある質問
結果は常に約分されますか?
はい。 分子と分母は最大公約数で割られるため、分数は常に既約の形で返されます。
負の分数は使えますか?
はい。 負の分子・分母を受け付けます。結果では符号が常に分子に正規化されます。
小数値はどのように計算されますか?
正確な分数を小数第6位まで表現した表示専用の値です。分数そのものが正確な答えです。
分母が違う分数の引き算はどう計算しますか?
2つの分母を掛けた数を共通の分母にし、それに合わせた2つ目の分子を1つ目の分子から引きます。最後に最大公約数で割るので、答えは必ず約分された形になります。
小さい分数から大きい分数を引くとどうなりますか?
正しい負の答えになります。マイナスの符号は常に分子に付くため、マイナス2分の1は−1/2と表示され、符号も別に示されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/adding-and-subtracting-fractions \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"add","a_num":1,"a_den":2,"b_num":1,"b_den":3}'const res = await fetch("https://api.kit.forhosting.com/math/adding-and-subtracting-fractions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"operation": "add",
"a_num": 1,
"a_den": 2,
"b_num": 1,
"b_den": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/adding-and-subtracting-fractions",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"operation": "add",
"a_num": 1,
"a_den": 2,
"b_num": 1,
"b_den": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/adding-and-subtracting-fractions", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"operation":"add","a_num":1,"a_den":2,"b_num":1,"b_den":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"operation":"add","a_num":1,"a_den":2,"b_num":1,"b_den":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/adding-and-subtracting-fractions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"operation": "add",
"a_num": 1,
"a_den": 2,
"b_num": 1,
"b_den": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.adding_and_subtracting_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つの分数の分子と分母を受け取り、指定した演算(加算または減算)を適用して、約分済みの結果を返します。
分数が小数に勝る理由
このエンドポイントは分数を本来の作業単位として扱います。
約分の仕組み
約分後の分母が1の場合、結果は整数であり、レスポンスはその旨を明示して帯分数のフィールドを省略します。それ以外の場合は整数部分と残りの真分数も返され、これはレシピや大工仕事の寸法で一般的に使われる表記です。小数フィールドは表示用の固定6桁の表現であり、正確な計算へ再利用することは想定していません。これらはすべて純粋な整数演算であり、約分のどの段階にも浮動小数点数は入らないため、答えは決定的で、どの呼び出しでも同一です。
検証、エラー、公平な課金
演算は正確に'add'または'subtract'でなければならず、各分子と分母は整数である必要があります。また、どちらの分母もゼロであってはなりません。ブラウザ版も同一の検証を実施するため、テストから本番へ移行する際に予期せぬ事態は起こりません。負の分子・分母も完全にサポートされているため、小さい分数から大きい分数を引いても、正しい負の結果が得られます。このエンドポイントは迅速かつ低コストで失敗します。計算の前にすべてのフィールドが検査されます。JSONの数値でも、"−3"や"7"のような整数文字列でも送信できます。分母ゼロは典型的なゼロ除算の落とし穴であり、下流のパイプラインを汚染する無限大や静かなNaNを返す代わりに、APIは問題のあるフィールド名を示すinvalid_inputエラーでリクエストを拒否します。このエラーはクライアント側の誤りとして分類されるため、リクエストは課金されません。お支払いいただくのは回答に対してのみで、1回の呼び出しにつき$0.002です。APIで動作しているものと同じコードがこのページのブラウザ上で無料で動作するため、自動化されたワークフローに組み込む前に手動で計算を検証できます。
技術的な質問
料金はいくらですか?
API経由の場合、1リクエストにつき$0.002です。このページのブラウザ上では無料で実行できます。
分母がゼロの場合はどうなりますか?
該当フィールド名を示すinvalid_inputエラーでリクエストが拒否され、課金されません。
帯分数は返されますか?
約分後の結果が整数でない場合、レスポンスには帯分数形式のmixed_whole、mixed_num、mixed_denが含まれます。