割引後の価格・支払額・節約額を計算
定価120の品が25 %引きなら支払額は90で、30の節約です。1つの割引か、順番どおりの割引のリストを入れると、最終価格、適用した各割引率、節約額の合計が小数点以下二桁に丸めて分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 元の価格
- 120
- 割引率
- 25
- 割引
- 25
- 最終価格
- 90
- 節約額の合計
- 30
1つの割引率、または複数の値引きを順番に適用した後、実際に支払う価格を計算します。元の価格を入力し、単一の割引率か、20パーセントの後に10パーセントを適用するような順序付きの割引一覧を選択してください。結果には正規化された元の価格、適用した各割引率、最終価格、合計節約額が表示されます。計算は常に同じ結果になり、各段階で通貨の最小単位に丸め、不正な割合を自動修正せず拒否します。
元の価格と適切な割引入力を選択します
最初に、0以上の元の価格を数値で入力してください。次に、割引方法を必ず1つだけ指定します。複数の値引きを組み合わせる場合は、1つ以上の割合を順番に並べたdiscountsを使用してください。
0パーセントは有効で価格を変更せず、100パーセントはその時点の価格を0にします。負の割合は値上げとして働くため拒否され、100を超える割合も負の価格を生成せず入力エラーになります。元の価格は有限であり、記載された上限以内でなければなりません。
この厳密な仕様により、決済の事前表示や自動処理で誤った値を直ちに停止でき、受理された入力は常に同じ計算経路を通ります。単一の割合も要素1つの一覧として応答されるため、後続処理は2種類の入力を統一して扱えます。
連続割引が結果を変える仕組みを理解します
連続割引は残っている価格に順番に適用され、割合を合計して一度だけ適用するものではありません。価格が100の品物を20パーセント引きにすると80が残ります。さらに10パーセントを適用すると8が引かれて72になり、単純な30パーセント引きとは異なります。
この違いは、併用可能なクーポン、取引割引、季節値下げ、交渉済み価格帯で重要です。計算機はdiscountsに指定された順序を維持し、各項目を1回ずつ処理します。各値引きの後で中間価格を最小通貨単位に丸めるため、多くの小売システムが支払額を次の販売促進へ渡す方法と一致します。
100パーセントの項目は現在価格を0にし、その後の有効な割引も0のままです。
買い物、見積もり、自動処理で結果を活用します
返されるオブジェクトは、そのまま読みやすく、別のシステムへ簡単に渡せる設計です。特に過大な値のメッセージは100超過を明示し、割合を黙って制限しません。この機能はネットワーク要求を行わず、乱数も使用せず、呼び出し間の状態も保持しません。
そのため、再現可能なテストや一括計算に適しています。通常2桁の小数で表示するどの通貨にも同じ計算を使えるよう、通貨記号は意図的に付けていません。
活用例
セール価格を確認します
表示価格と宣伝された割合から、最終価格と正確な節約額を求めます。
併用クーポンを評価します
表示された割合を誤って合計せず、複数の割引を順番に適用します。
見積もりを自動化します
見積もり、決済表示、承認記録向けに一貫した最終価格と節約額を作成します。
よくある質問
価格はどのように丸められますか?
元の価格と各段階の中間価格を、最も近い最小通貨単位に丸めます。
120の25 %引きはいくらですか?
最終価格は90で、30の節約になります。元の価格に120、割引に25を入力すると、適用された割引率も表示されるので確認できます。
0 %や100 %の割引はどうなりますか?
0 %なら価格は変わらず、100 %なら0になります。負の割引率や100を超える値は、値上げや負の価格になってしまうため受け付けません。
いくら節約できたかも表示されますか?
はい。最終価格と並んで、丸めた元の価格から丸めた最終価格を引いた節約額の合計と、適用した各割引率が順番どおりに表示されます。
20 %引きのあとにさらに10 %引くとどうなりますか?
割引は残りの価格に順番にかかります。100の品なら20 %引きで80、さらに10 %引きで8下がって72になり、単純な30 %引きとは結果が異なります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calc2/discount-price \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"original_price":120,"discount_percentage":25}'const res = await fetch("https://api.kit.forhosting.com/calc2/discount-price", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"original_price": 120,
"discount_percentage": 25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/discount-price",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"original_price": 120,
"discount_percentage": 25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/discount-price", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"original_price":120,"discount_percentage":25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"original_price":120,"discount_percentage":25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/discount-price", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"original_price": 120,
"discount_percentage": 25
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.discount_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
元の価格と適切な割引入力を選択します
単純なセールには、0から100までの値を持つdiscount_percentageを使用します。両方のフィールドを送信すると適用順が曖昧になるため使用できず、両方を省略することもできません。
連続割引が結果を変える仕組みを理解します
最終応答にはfinal_priceとtotal_savedが含まれ、後者は丸めた元の価格から丸めた最終価格を引いた値です。各段階で同じ決定的な規則を使うため、同一のJSONリクエストは同一の結果になります。誤って巨大なリクエストを送っても処理を予測できるよう、一覧は100項目までに制限されています。
買い物、見積もり、自動処理で結果を活用します
original_priceは最小通貨単位に丸めた開始額、discountsは適用順の割合、final_priceはすべての値引き後に残る金額、total_savedは開始額との差額全体を示します。店舗ではfinal_priceとtotal_savedを並べて表示でき、購買担当者は異なる割引列を持つ仕入先の提案を比較でき、見積もりサービスは後日の確認用に割引順序全体を保存できます。APIを自動化する際はinvalid_inputコードでエラーを確認し、メッセージから問題のフィールドを特定してください。ブラウザー版は無料で、APIリクエストの料金は$0.002です。
技術的な質問
連続割引の割合は合計されますか。
いいえ。各割合は、直前の割引後に残った価格へ適用されます。
割引が100パーセントを超えるとどうなりますか。
リクエストはinvalid_inputで失敗し、過大な割合が自動的に制限されることはありません。
2つの割引フィールドを両方指定できますか。
いいえ。1回の値引きにはdiscount_percentage、順序付きの複数割引にはdiscountsを使用してください。
APIリクエストの料金はいくらですか。
各APIリクエストは$0.002で、ブラウザーの計算機は無料です。