BOGOの実質単価と合計節約額を計算
1個買うと1個無料、またはX個買うとY個無料というキャンペーンは魅力的でも、実際に購入する数量で1個当たりいくらになるかは分かりにくいものです。この計算機は指定した購入数に特典を適用し、支払う商品と無料の商品を分け、通常合計、キャンペーン合計、合計節約額、実質単価を表示します。一般的な1個購入で1個無料だけでなく、2個購入で1個無料などにも対応し、すべての商品に同じ通常単価を使用します。通常のセール価格や割引率と比較しやすくなります。
無料で実行
広告どおりにキャンペーン条件を入力します
まずキャンペーン適用前の通常単価を入力し、次に持ち帰る商品の総数を指定してください。BOGOはどの数量にも均等に適用されるとは限らないため、購入数が重要です。6個なら1個購入で1個無料の組を3組作れますが、5個では2組だけが成立し、1個は通常価格になります。X個購入でY個無料のXを購入数量、Yを無料数量に入力します。一般的な1個購入で1個無料なら両方を1にし、2個購入で1個無料なら2と1にします。数量欄はすべて商品の整数個数を表し、正の整数でなければなりません。単価は0でも構いませんが、負数や無限値は使用できません。すべての商品が同じ通常価格で、各グループの支払条件を満たすと指定数が無料になる前提です。グループ数ではなく、実際に購入する商品総数を入力すると、未完成のグループも正しく処理されます。
実質単価と節約額の計算を確認します
計算機は購入数量と無料数量の合計を1つのキャンペーングループとして扱います。購入内の完成したグループを数え、その後で残りの商品を調べます。未完成グループでは最初のX個を支払い、その条件を超えた商品が上限まで無料になります。支払商品数は総購入数から無料商品数を引いた値です。通常合計は単価を全商品数に掛け、キャンペーン合計は支払商品数だけに掛けます。両者の差が合計節約額です。最後にキャンペーン合計を無料分を含む受取商品総数で割り、実質単価を求めます。比較にはこの値が特に役立ちます。2個目無料でも、対象の組が成立しなければ単価は下がりません。端数の商品は全額支払いとなり平均を上げます。結果は浮動小数点の不要な誤差を避けながら12桁の小数位まで安定して丸めます。税金、送料、クーポン、会費、通貨換算は加算しません。
現実的な代替案と比較します
算出した実質単価を、競合するセールの実際の単価と並べてください。目立つ宣伝文句だけでなく、選んだ数量で本当に安い方を比較できます。対象商品をすべて必要とする場合、BOGOは有利ですが、無料分を得るためだけの追加購入は支出や廃棄を増やすことがあります。実質単価だけでなくキャンペーン合計も確認してください。平均価格が魅力的でも、会計総額が予算を超える場合があります。小売担当者は値札や決済テストに、教育担当者や調達担当者は未完成グループの説明や比較に利用できます。計算は決定的で、ネットワーク、現在日付、乱数、外部価格情報を使わないため、同じ入力には常に同じ結果を返します。API呼び出しには公開基本料金$0.002が適用されます。同一単価の商品を前提とします。混在商品の最安品無料、利用回数上限、一部割引、他特典との併用は別途計算してください。
活用例
食品キャンペーンを比較します
店頭のBOGOを、買い物リストの正確な数量に対する実質単価へ換算します。
オンラインカートを確認します
無料になる商品数を確認し、予想キャンペーン合計を決済画面と比較します。
仕入先の提案を評価します
X個購入でY個無料の箱売り条件を統一した単価に換算し、仕入れを比較します。
よくある質問
実質単価とは何ですか?
キャンペーン合計を、特典で無料になった商品を含む受取商品総数で割った値です。
2個購入で1個無料にも対応しますか?
はい。buy_quantityを2、free_quantityを1に設定し、購入する商品総数を入力してください。
キャンペーングループが未完成の場合はどうなりますか?
最初に支払条件を満たします。その条件を超えて残る商品だけが、未完成グループ内で無料になります。
商品ごとに価格が違っても使えますか?
いいえ。同じ通常単価の同一商品を前提とし、最も安い商品を無料にする規則は適用しません。
API計算の料金はいくらですか?
APIリクエストごとに公開基本料金$0.002が適用されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/life/bogo-effective-price \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"unit_price":12.5,"quantity":7,"buy_quantity":2,"free_quantity":1}'const res = await fetch("https://api.kit.forhosting.com/life/bogo-effective-price", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"unit_price": 12.5,
"quantity": 7,
"buy_quantity": 2,
"free_quantity": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/bogo-effective-price",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"unit_price": 12.5,
"quantity": 7,
"buy_quantity": 2,
"free_quantity": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/bogo-effective-price", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"unit_price":12.5,"quantity":7,"buy_quantity":2,"free_quantity":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"unit_price":12.5,"quantity":7,"buy_quantity":2,"free_quantity":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/bogo-effective-price", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"unit_price": 12.5,
"quantity": 7,
"buy_quantity": 2,
"free_quantity": 1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.bogo_effective_price",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |