2項・3項の比率を簡単化して合計に合わせる計算機
この比率計算機では、よく併用される2つの計算をまとめて行えます。0以上の数値を2個または3個入力すると、関係を保ったまま最小の整数比へ簡単化します。さらに目標合計を指定すれば、各項へ配分する値も算出します。元の比率、最簡整数比、簡単化後の総部分数、倍率、換算値を確認できます。整数、0、有限小数に対応しているため、レシピ、予算配分、混合、計画、学習問題の確認などにご活用いただけます。
無料で実行
関係を変えずに2項または3項の比率を簡単化します
比率は各項の相対的な割合を表します。そのため、すべての項を同じ値で掛けたり割ったりしても関係は変わりません。この計算機は、入力された各数値を最初に正確な整数表現へ変換します。1.5:2.25のような有限小数を概算の文字列として扱うと不自然な答えになる場合があるため、この処理が重要です。次に、全項に共通する最大公約数を求め、それぞれの整数をその値で割ります。たとえば18:24は3:4に、6:9:15は2:3:5になります。0:4:8は0:1:2へ簡単化できるため、個別の項には0も指定できます。ただし、0:0のように全項を0にはできません。正の部分数がなく、合計への換算ができないためです。出力には元の数値を残し、簡単化した比率を配列とコロン区切り文字列の両方で示すため、人による確認にもシステム処理にも便利です。
簡単化した各部分を指定合計へ正確に換算します
簡単化後の各項を合計すると、比率全体の部分数が得られます。目標合計をこの部分数で割って倍率を求め、簡単化した各項に掛けます。たとえば予算を2:3:5で配分し、利用可能な合計が1,000の場合、全体は10部分です。1部分は100となり、換算結果は200、300、500です。端数が生じる場合も同じ方法で計算します。1:2を合計10へ換算すると、安定した数値精度により3.33333333333と6.66666666667になります。簡単化した整数を基準にするため、計算過程が明確で、意図した割合も維持されます。目標合計に0を指定することもでき、その場合は全項が0になります。負の合計は、この計算機が扱う0以上の配分モデルに合わないため受け付けません。
有効な入力と返される項目をご確認ください
有限数をちょうど2個または3個指定してください。負の比率項、未入力、NaN、無限大、全項が0の比率、個数が不正な配列は入力エラーになります。目標合計も有限かつ0以上である必要があります。応答のoriginal_ratioには受理された元の項が入り、simplified_ratioには最簡整数比が入ります。parts_totalは簡単化した各項の合計です。scale_factorは指定合計における1部分の値を示し、scaled_ratioは入力順の最終配分を示します。単位は意図的に付加しません。合計がグラム、円、リットル、席数、時間のいずれであっても、換算値は同じ単位を引き継ぎます。自動処理ではコロン区切り文字列を再解析せず、返された数値配列をご利用ください。端数処理は用途ごとの余りの扱いを決めてから適用することをおすすめします。
活用例
レシピや混合量を変更する
材料の比率を簡単化し、新しい合計量に必要な各成分の量を計算します。
固定予算を配分する
部門ごとの重みを、利用可能な予算に一致する分かりやすい配分へ変換します。
比率問題の答えを確認する
2個または3個の数値から最簡整数比を求め、指定合計への換算結果を確認します。
よくある質問
比率計算の料金はいくらですか?
APIは1回$0.002です。同じ決定論的な計算をブラウザーでは無料でご利用いただけます。
3項の比率も簡単化できますか?
はい。2項または3項を指定すると、すべての項を共通の最大公約数でまとめて簡単化します。
小数の比率項に対応していますか?
はい。有限小数を正確な整数比へ変換してから簡単化します。
比率に0を含められますか?
個別の項には0を指定できますが、少なくとも1項は0より大きい必要があります。全項が0の比率は換算できません。
負の比率項を入力するとどうなりますか?
無効な入力としてエラーを返します。すべての比率項を0以上にしてください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calc2/ratio-simplify \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"terms":[2,3,5],"total":100}'const res = await fetch("https://api.kit.forhosting.com/calc2/ratio-simplify", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"terms": [
2,
3,
5
],
"total": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/ratio-simplify",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"terms": [
2,
3,
5
],
"total": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/ratio-simplify", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"terms":[2,3,5],"total":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"terms":[2,3,5],"total":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/ratio-simplify", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"terms": [
2,
3,
5
],
"total": 100
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.ratio_simplify",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |